我有一个类,如下:
private class verifierListener implements SerialPortEventListener {
String outBuffer;
char charBuffer;
public void serialEvent(SerialPortEvent event) {
if (event.isRXCHAR()) {//If data is available
timeOut = 1000;
lastReadTimer = System.currentTimeMillis();
if (event.getEventValue() > 0) {//Check bytes count in the input buffer
try {
byte[] buffer = verifierPort.readBytes(event.getEventValue());
//INSERT CODE HERE
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
有两种可能的实现方法(在此处插入代码
区域)
案例A:
outBuffer = new String(buffer);
bfrFile.print(outBuffer);
sysOutWriter.append(outBuffer);
案例B:
for(byte bt : buffer) {
charBuffer = (char) bt;
bfrFile.print(charBuffer);
sysOutWriter.append(charBuffer);
}
都编译并运行,并做它们应该做的事情。但我试图使该代码尽可能无缝地执行,因此我不可能冒在低端 PC 上丢失传输数据的风险。
我假设情况 A 由于字符串初始化而会产生更多开销,但我想在删除它之前确定一下。
你们能说出哪一个更干净,和/或如何确定每个的处理成本吗?
最佳答案
即使在低端电脑上,您也不应该丢失任何数据。这是因为您的代码和通过串行端口传入的实际数据之间存在(多个)缓冲区(操作系统缓冲区、Java 缓冲区等)。就速度而言,除非您经常运行此代码(例如每秒数千次),否则您不应该注意到差异。
假设这是一个标准串行连接,并且您以每秒 115200 位的速度运行,这意味着您每秒最多可以获得 14,400 个字符。即使您一次读取一个字符,您也不应该看到速度大幅下降。
关于java - 哪个处理器成本最高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825930/