我在C中编写了一些代码,我惊讶地发现它执行的时间比我预期的要长.我想知道哪些操作成本高昂以及如何摆脱它们.
我使用赋值语句,条件(嵌套),循环,函数调用和回调.
对常见的C性能缺陷有什么好的参考?
我可以使用一个好的剖析器吗?
谢谢你们
感谢您的所有投入.你是绝对正确的:它的算法可以减慢事情(大幅度).虽然通过编码实践可以获得一点性能提升 - 我100%确信只有错误的算法才能大大减慢速度.
事实上:我正在研究RB树并按升序插入节点.花了很多时间(和Binary Search Tree(Skewed)一样糟糕).在寻求你的建议后,我检查了算法,我在平衡方面犯了一个错误,使树倾斜(倾斜).我纠正了.
再次感谢您的建议.
您的性能问题可能与您实施的算法有关,而与您使用的操作有关.
发布代码可能很有用.告诉我们你正在尝试做什么,以及你正在使用什么算法也会有所帮助.事实上,您的问题并没有为任何人提供足够的信息来为您提供有用的答案.
其他人推荐gprof - 我是第二个,如果你有兴趣分析你的代码.我之前也使用过VTune,并且喜欢它.但首先要确保您理解您的代码及其功能,并且在处理您希望它处理的数据大小时,您实现的算法是时间有效的.
顺便说一句,使用C并不意味着您的代码会自动运行得更快.通常,I/O绑定代码看不到性能改进.UI重代码可能无法从使用低级语言中受益.通常,C是一种更好的实现语言,您需要低级访问,与硬件或低级操作系统服务连接,或者如果您有非常具体和严格的性能要求,这些要求很难在高级别,垃圾收集语言中满足.或者如果您碰巧喜欢C,但这显然是一个主观问题.