【发布时间】:2015-10-05 13:03:54
【问题描述】:
我的算法有两个输入:
- 1 个将被编码的 utf8 字符串对象
- 1 个字符集对象,指示我需要将字符串编码成什么
最后,返回的结果会被放入一个OutputStream,这个动作可能会发生多次,但至少会发生一次。在这种情况下不会发生多线程。
我找到了两个解决方案:
- 在给定的字符串上调用 getBytes(Charset) 并提供给定的字符集。这将返回一个字节[]
- 在给定的字符集上调用 encode(String) 并提供给定的字符串。这将返回一个 ByteBuffer。
深入研究这些方法背后的代码显示了每个底层算法的复杂设计。我不能说我明白如何在这两个选项之间做出选择。
- 调用这两种方法是否存在显着的性能差异?
- 将结果放入 OutputStream 是否存在显着的性能差异?
- 足迹是否存在显着差异?
哪种解决方案通常是更好的选择?
【问题讨论】:
-
很可能不会,很可能不会,很可能不会,并使用您觉得舒服的任何一个。像这样的微优化是浪费时间。
-
@Kayaman 我喜欢
micro optimization这个词 -
@nafas 很多人都喜欢这个主意。
-
@Kayaman 如果您正在开发一个需要微秒级别优化的应用程序,我可以理解。但是对于那些使用 java 来编写此类程序的人,我只是说“祝你好运”:)
-
@nafas 这完全取决于技能。例如,下面的 Lawrey 先生使用 Java 创建了几个性能关键库。
标签: java string encoding character-encoding bytebuffer