【问题标题】:Best way to learn how to write latency-critical, fast C++/Java/C# code? [closed]学习如何编写延迟关键、快速的 C++/Java/C# 代码的最佳方式? [关闭]
【发布时间】:2011-01-26 22:32:16
【问题描述】:

谁能给我一些关于学习如何进行极低延迟编程的最佳方法的指导?我有很多编程书籍,但我从未见过一本专注于(或帮助)编写极速代码的书籍。还是书籍不是最好的前进方式?

非常感谢专家的一些建议!

编辑:我想我更多地指的是 CPU/内存限制。

【问题讨论】:

  • 取决于该代码是什么?代码是 IO 绑定的,还是 cpu 绑定的?如果您要在数据库上等待,那么手工组装是没有意义的,如果您只想编写一个文本文件,那么使用 google 标准文件系统也没有任何意义。
  • 只有一种语言的答案需要书本,而您希望得到 C++/Java/C# 的答案:那就是图书馆。所以我想如果你期待一些答案,你需要协调你的问题。
  • 第 1 步:编写程序。第 2 步:衡量绩效。第 3 步:如果性能是垃圾,请在热点进行优化。第 4 步。转到第 2 步。
  • @Billy,您可以在 3 和 4 之间插入一个中间步骤:通过展示您的特定场景、显示您正在处理的代码并询问如何优化它来询问 StackOverflow 上的特定问题,因为现在你遇到了一些性能问题。
  • 达林,如果你要讽刺的话——你至少应该是对的。为什么有人需要特定场景来回答问题?也许他们需要在进入那个特定场景之前问这个问题。因此,请不要犹豫,继续您的 C# GUI 编程。

标签: c# java c++ low-latency


【解决方案1】:

[C++程序员]:

超低延迟编程很难。比人们第一次踏上这条路时所怀疑的要困难得多。您可以使用一些技术和“技巧”。像 IO 完成端口、多核利用率、高度优化的同步技术、共享内存。这个名单永远持续下去。 (编辑)它不像“code-profile-refactor-repeat”那么简单,因为您可以编写出强大且快速的优秀代码,但绝不会是真正的超低延迟代码。

不幸的是,据我所知,没有一个资源可以向您展示它是如何完成的。专注于(并且擅长)超低延迟代码的程序员是业内最优秀且经验最丰富的程序员之一。并且有充分的理由。因为如果有成为一名优秀的低延迟程序员的灵丹妙药,那就是:你必须对所有事情都了解很多。而这些知识来之不易。这需要多年(几十年?)的经验和不断的学习。

就研究本身而言,出于某种原因,我发现以下几本书很有用或特别有见地:

【讨论】:

    【解决方案2】:

    我的建议是了解 C++/Java/C# 的工作原理,并大致了解它如何转换为机器级指令。有些操作比其他操作更昂贵。高级语言中的一段小代码 sn-p 可以翻译成一大堆机器指令(通常比你想象的要多。)

    此外,一定要了解各种数据结构、它们的优点以及它们在各种问题规模下的性能特征。为问题选择正确的数据结构可以极大地提高执行速度。

    【讨论】:

      【解决方案3】:

      从学习汇编开始。然后,如果您打算使用 Java 或 .NET 学习它们的解释字节码。一旦你做到了这一点,你就需要了解你正在使用的语言,以及你正在使用的编译器。继续走这条路,您将收集到一些知识,例如 VC++ 和 GCC 三元运算符 (?:) 如何导致创建临时值,而等效的 if 语句则不会。

      然后大约 10 年后,您将能够编写相当不错的低延迟代码。

      很遗憾,没有快速的学习方法。

      学习 C++ 的好书: 有效的 C++ 更有效的 C++ 卓越的 C++

      【讨论】:

      • +1:“大约 10 年后,您将能够编写相当不错的低延迟代码。”如此真实。
      • 我在大学学习了 ARM 组装(非常简单地学习了 MIPS)你会推荐学习英特尔吗?
      • 如果您正在为英特尔 PC 编写代码,那么可以。也就是说,作为一名专业开发人员,您应该很少编写汇编代码。也就是说,能够很好地理解装配将使您成为更好的工程师。
      猜你喜欢
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2011-10-18
      相关资源
      最近更新 更多