7

Could anyone give me some pointers as to the best way in which to learn how to do very low latency programming? I have many programming books but I've never seen one which focused (or helped) on writing extremely fast code. Or are books not the best way forward?

Some advice from an expert would be really appreciated!

EDIT: I think I'm referring more to CPU/Memory bound.

4

3 回答 3

9

【C++程序员】:

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

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

就研究本身而言,出于某种原因,这里有几本书我觉得有用或特别有见地:

于 2011-01-26T22:44:06.567 回答
4

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

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

于 2011-01-26T22:43:28.910 回答
1

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

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

不幸的是,没有快速的方法来学习这一点。

学习 C++ 的好书:Effective C++ More Effective C++ Exceptional C++

于 2011-01-26T22:43:46.597 回答