【问题标题】:Estimating running time of a "C language" code block: Is it possible? [closed]估算“C 语言”代码块的运行时间:可能吗? [关闭]
【发布时间】:2018-08-18 13:22:43
【问题描述】:

我想在C language 中编写一个函数,它必须检查数百万个参数,如果所有参数都为真,则函数也返回真,否则返回假。 p>

但是,估计此操作的时间很重要,这意味着我们需要知道它需要多少毫秒。 (大概的时间就足够了。)我们需要知道这个时间才能知道这个函数的吞吐量

注意:此参数是本地从文件中读取的,我们使用普通计算机。

【问题讨论】:

  • 这取决于很多方面。例如,如果参数是从文件中读取的、从数据库中读取的、从服务器中获取的等等。最好的办法是编写函数或其中的一部分,然后使用分析器查看瓶颈在哪里。
  • @Paul Ogilvie 谢谢,我编辑了我的问题。
  • 10 年前的微调器还是最新的 SSD?
  • 什么参数?打包二进制布尔值或具有复杂比较函数的大型结构?
  • 评估是否分布在 32 个内核上,以便在加载数据的前 1/32 后立即开始检查?

标签: c time throughput


【解决方案1】:

与其估计时间,不如测量它。现代 CPU 架构执行的优化非常复杂,以至于 simple change in the data ordering could increase the running time of your function by a factor of six or more.

在您的情况下,运行一个实际的基准测试非常重要:您检查的所有参数都需要放在内存中与实际程序中相同的位置,并且您的代码应该以相同的顺序检查它们。这样你就会看到缓存的效果。由于您的函数是全有或全无,因此分支预测对您的代码几乎没有影响,因为在循环退出之前预测最多会失败一次。

由于您是从文件中读取参数,因此在测试程序中使用与您计划在实际程序中使用的 API 相同的 API 非常重要。根据平台的不同,I/O API 可能会表现出显着的性能差异,因此您的测试代码应该测试您计划在生产中使用的内容。

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 2012-04-20
    • 2018-06-22
    • 2021-04-08
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    相关资源
    最近更新 更多