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