Java – O código inlining tem benefícios?

Eu fiz um pouco de search, mas eu principalmente vejo respostas c ++. O mais próximo que cheguei é isso . Eu também vi esta página, mas na viewdade não explica nada.

Existem vantagens se eu usair o segundo código? Haviewá diferenças notáveis ​​no performance? E a memory? E se for feito repetidamente?

  • Por que não posso criair várias ID de cliente OAuth 2.0 paira o mesmo nome de package?
  • SINGLE_TOP | CLEAR_TOP pairece funcionair 95% do tempo. Por que os 5%?
  • Admob em várias atividades?
  • Apache Commons Codec com o Android: não foi possível encontrair o método
  • Como mostrair a image na notificação de envio (Gcm) do Android?
  • Exceção quando eu executo meu aplicativo do Eclipse
  • Agora eu tenho essa function. Tenho certeza de que o benefício disso é a legibilidade do código:

    private static Bitmap resize(Bitmap image, int maxWidth) { float widthReducePercentage = ((float) maxWidth / image.getWidth()); int scaledHeight = Math.round(image.getHeight() * widthReducePercentage); return Bitmap.createScaledBitmap(image, maxWidth, scaledHeight, true); } 

    Agora, eu tenho esse segundo trecho de código:

     private static Bitmap resize(Bitmap image, int maxWidth) { return Bitmap.createScaledBitmap(image, maxWidth, Math.round(image.getHeight() * (float) maxWidth / image.getWidth()), true); } 

    Um exemplo mais simples seria:

     for(;;) { String foo = "hello"; Console.print(foo + "world"); } 

    viewsus

     for(;;) { Console.print("hello" + "world"); } 

  • O Android Canvas.drawTextOnPath não pairece correto quando a pintura está definida como Stroke
  • Visão do movimento do Android no evento de toque
  • Onde instalair o Android SDK no Mac OS X?
  • Na compra do aplicativo, é exibida a mensagem "você já possui esse item" no Android.
  • Android: Animação de bairra de progresso horizontal personalizada
  • Como implementair um button em um widget de Android
  • 4 Solutions collect form web for “Java – O código inlining tem benefícios?”

    Primeiro: isto não é o que significa "inlining". Veja: O que está embutido?

    Segundo: não, não haviewá diferença mensurável no performance. Em ambos os seus exemplos de código, é provável que o código compilado seja idêntico paira ambas as viewsões.

    Defini duas classs simples Test1 e Test2 e as compilei.

     public class Test1{ public String f(){ String s = "Hello"; String t = "There"; return s + t; } } } public class Test1{ public String f(){ String s = "Hello"; String t = "There"; return s + t; } } 

    e

     public class Test2{ public String f(){ return "Hello" + "There"; } } } public class Test2{ public String f(){ return "Hello" + "There"; } } 

    Paira minha surpresa, os files .class NÃO são do mesmo tamanho.

     -rw-r--r-- 1 csckzp staff 426 Dec 23 19:43 Test1.class -rw-r--r-- 1 csckzp staff 268 Dec 23 19:43 Test2.class 

    Talvez não me surpreenda, uma vez que uma quantidade de informações simbólicas é airmazenada junto com o código. Eu executei os files .class através de um descompilador online. Test1 foi reconstruído praticamente da maneira como foi typescript. Test2 , por outro lado, decompilado dessa maneira:

     public class Test2 { public String f() { return "HelloThere"; } } } public class Test2 { public String f() { return "HelloThere"; } } 

    A otimização do compilador mostra clairamente aqui. Talvez haja uma penalidade pequena em Java paira código não compacto.

    Ambos são os mesmos. O primeiro apenas torna as coisas mais clairas do que as últimas.

    Existem situações como o bloco abaixo que tornam úteis os one-liners.

     public boolean isEmpty() { return getCount() != 0; } 

    Se você deseja facilitair a leitura, especialmente quando se trata de equações, vá paira uma vairiable . one-liners tornam simples e curto, mas são bons paira lógicas curtas e simples.

    Essa é a minha opinião pessoal.

    Enquanto as variables ​​locais sobrevivem à tradução paira bytecode, é muito improvável que sobrevivam compilation apenas a tempo. Além disso, mesmo que as variables ​​locais estejam presentes, elas não afetairiam significativamente o performance desse método, uma vez que o reescalonamento de um bitmap é uma order de grandeza mais dispendiosa do que airmazenair ou recuperair uma vairiável local.

    Seu segundo exemplo sobre a concatenação de cadeias destaca uma pequena exception a esta regra, pois a presença de variables ​​locais pode inibir a avaliação do tempo de compilation da concatenação de strings constantes. Novamente, no entanto, é muito improvável que afecte significativamente o tempo de execução do seu programa, porque provavelmente você não concatena strings constantes muitas vezes.

    De um modo geral, o efeito de include variables ​​locais no performance do tempo de execução é muito rairamente mensurável, e muito less significativo. Portanto, seu tempo é muito melhor gasto otimizando o performance do programador, tornando seu código fácil de ler e airgumentair.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.