c - 什么是好的多核 64 位 "Hello World"程序?

标签 c 64-bit multicore algorithm performance

我最近将家用 PC 升级为四核 CPU 和 64 位操作系统。我以前有一些使用 C/C++ 的经验,我真的很“渴望”尝试使用一些 64 位 CPU 功能。什么是通过执行一些在 32 位单核代码中根本无法正常工作的简单操作来演示 64 位多核功能的优秀“Hello World”类型程序?

我只是想“感受一下”这些新 CPU 在极端情况下如何影响 C/C++ 代码的性能。

最佳答案

OpenMP 将是一种在 C++ 中进行多核编程的简单方法。维基百科示例并没有真正执行任何处理器密集型操作,但您可以将“cout”替换为一些独立的、长时间运行的函数。

OpenMP

就 64 位而言,很多性能提升将来自几个地方。

吞吐量增加,因为所有数据元素都更宽,处理器可以在任何给定时钟周期内处理更多数据。查看一些 Microsoft 的 Exchange Server 基准测试,它们现在已经转向支持 64 位,只是因为吞吐量增加令人难以置信。

更多的寄存器,由于64位架构有大量的寄存器,大部分函数参数和返回值都可以使用寄存器传递。

在 x86 ABI 中有一些 calling conventions一个或两个参数可以通过寄存器传递,其余的必须压入堆栈。使用像 cdecl 这样的通用调用约定,不会将单个参数或返回值放在寄存器中。由于堆栈位于主内存中,这可能会对性能造成很大影响。

关于c - 什么是好的多核 64 位 "Hello World"程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1654890/

相关文章:

mysql - 在c中将文件流传输到mysql

c++ - 如何使用 Windows x64 记录堆栈帧

cmake 在我的 64 位窗口中构建了一个 32 位项目

windows - 将 Delphi 代码移植到 64 位 - 为什么没有编译器警告?

operating-system - 多核和操作系统

c++ - 是否有可能在 Linux 中的 C/C++ 中获得指定日期/时间到达时的通知?

c++ - 如何处理main()函数的返回值?

c - 查找子串中字符出现的次数

multithreading - Elasticsearch 即使在满载情况下也只使用一半的 cpu 内核

java - 哪些Python模块将有效利用多核处理大量传入消息