以最佳性能加载 android 中的资源

Loading resources in android with best performance

有时我会做一些小测试来了解在 Android 中什么会降低性能。
今日代码:

final long start = System.currentTimeMillis();
    new Thread(new Runnable() {
        @Override
        public void run() {
            for (int i = 0; i < 10000; i++) {
                String s = getString(R.string.t1) + " " + getString(R.string.t2) + " " + getString(R.string.t3);
                String s = String.format(getString(R.string.str_format), getString(R.string.t4));
            }
            Log.d(TAG, "onCreate " + "diff: " + (System.currentTimeMillis() - start) + " ms");
        }
    }).run();

我使用的资源:

<string name="t1">Hello</string>
<string name="t2">little</string>
<string name="t3">bird</string>
<string name="str_format">Hello %1$s</string>
<string name="t4">little bird</string>

Logcat 说(10k 次迭代):

  1. 运行(每个字符串单独链接):~270ms
  2. 运行(使用String.format):~200ms

所以在这个例子中,使用 String.format() 的速度提高了 30-40%。

我的问题:这是加载字符串资源的最佳方式还是还有其他机会?

我认为你所做的是唯一的方法。如果您只是出于个人兴趣这样做,使用 arrays.xml 或复数形式的字符串时可能会有更多差异。

还有一个内置的字符串格式 getString(R.string.str_format, getString(R.string.t4)) 我不知道这与 String.format

相比如何