我正在尝试使用不同的语言编写命令行程序,其中哪些程序做的完全相同。现在,我想知道哪个是性能最高的。是否有与语言无关的工具可以帮助我测量速度和内存消耗?如果它是跨平台的,那就更好了。谢谢!
答案 0 :(得分:1)
在任何Unix系统上,time
是一个完整的可执行文件,非常适合命令行工具。 time
或其他类似工具的某些实现会打印内存高水位线。
在Linux上,perf stat ./my_executable
将对其计时(挂钟和CPU总时间),并可以显示其他度量标准,例如分支错误预测,高速缓存未命中以及其他硬件性能计数器事件。还有内核软件计数器,例如页面错误,上下文切换和CPU迁移。 (有助于注意到来自其他进程的干扰,或使多线程程序注意到实际效果。)
perf record ./my_executable
将执行基于样本的分析以显示热点。它具有更多用于调用堆栈快照的选项,因此您可以找出哪些父函数实际上负责进行昂贵的函数调用。
由于某种原因,perf report
不希望您在没有调试符号的情况下进行深入分解,这可能是因为x86机器码无法向后反汇编,只能从已知的起点向前。但是它有很多起点,并且拒绝使用它们。
汇编语言基本上与语言无关,尤其是对于提前编译的二进制文件。在解释的代码中,没有与您的源相对应的机器指令。在JIT编译的代码中,但是它们仅在运行时存在,而不在任何地方的文件中。