java - 哪个处理器成本最高?

标签 java serial-port execution-time

我有一个类,如下:

 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/

相关文章:

java - 仅通过数据点已知的函数的数值积分 - AS3 首选

java - 用户 '' @'localhost' 的访问被拒绝(使用密码 : NO) in Eclipse, 而不是 'root' @'localhost' ,类路径已损坏

Java减去 float 是无穷大?

c++ - for-lops 如何在 C++ 示例 : calculating hashes 中准确工作

php - 运行 100 多个 MySQL 更新查询。优化提示请:)

Java AOT + 动态加载java类

c# - c#从串口读取字符

delphi - 读取之前获取串行端口上等待的字节数

java - 如何在 Windows 上用 Java 读/写串口?

c++ - C++ vs C源代码的编译和执行时间