2 回答
TA贡献2041条经验 获得超4个赞
您面临的问题不是调用,Integer.valueOf(666).toString()因为它只执行一次。实际的问题是,调用System.out.write()有一些开销。这可以通过使用填充了一些重复输入值的更大缓冲区来避免。
这是我想出的:
long start = System.currentTimeMillis();
byte[] bytes = String.valueOf(666).getBytes();
// use 20 mb of memory for the output buffer
int size = 20 * 1000 * 1000 / bytes.length;
byte[] outBuffer = new byte[size * bytes.length];
// fill the buffer which is used for System.out.write()
for (int i = 0; i < size; i++) {
System.arraycopy(bytes, 0, outBuffer, i * bytes.length, bytes.length);
}
// perform the actual writing with the larger buffer
int times = 10_000_000 / size;
for (int i = 0; i < times; i++) {
System.out.write(outBuffer, 0, outBuffer.length);
}
long end = System.currentTimeMillis();
System.out.println();
System.out.println("Took " + (end - start) + "Millis");
输出 666 千万次大约需要 600ms。
TA贡献1812条经验 获得超5个赞
这看起来是正确的。如果您将int
666 转换为 a char
,则将显示该内容。如果您想从字面上打印出 666,则需要将其转换int
为String
第一个:
byte[] bytes = Integer.toString(input).getBytes();
添加回答
举报