计算与打印

Computing vs printing

在我的程序中,我为提高性能做了一些修改。

首先,我取消了一些 3D 点计算,因为它是重复计算。

其次,我撤消了一些打印语句。

我观察到第二个变化大大提高了性能,而第一个变化并没有那么多。

这是否意味着涉及浮点数的计算比打印一些数据到控制台要便宜得多?浮点数算不算计算量大?

就处理器周期而言,浮点运算通常比整数运算更昂贵 and/or space 它在处理器硅片中所需的 and/or 所需的能量它。但是,印刷通常要贵得多。

与整数加法或乘法相比,浮点加法或乘法的典型性能可能是四个处理器周期的延迟。

格式化输出需要很多指令。将数字转换为十进制需要除法或执行 table 查找或执行其他算法。生成的代表数字的字符必须放在缓冲区中。必须执行检查以确保内部缓冲区没有溢出。当缓冲区已满,或打印操作完成并且必须发送到输出设备(而不是仅仅保存在缓冲区中以供将来操作)时,则必须执行操作系统调用以将数据从用户内存传输到一些输入输出驱动程序。即使是简单的缓冲区内格式化操作也可能需要数百个周期,而需要与文件系统或其他设备交互的打印可能需要数千个周期。 (实际上限是无限的,因为打印可能需要等待一些物理设备准备就绪。但即使特定操作的所有 activity 都在计算机本身内部,打印操作也可能需要数千个周期.)