C++:异步写入内存
C++: Asynchronous writing memory
我对C++编程没有什么疑问。我想知道是否有可能以异步方式(顺序代码)在内存中写入?但让我明确我的问题。我正在寻找一种算法的改进,我的代码的瓶颈似乎是在内存中编写。我想写在内存中,然后继续计算。有可能用一个处理器做到这一点吗?就像使用ALU同时使用写入块一样?我知道,我不会在下一次计算中使用结果。它写在矢量结果中。
感谢您花时间回复,无论是阅读还是阅读。
是和否。编译器将优化内存写入,以便处理器可以在写入内存块时执行操作。这是延迟隐藏的一种形式。这是"是"的答案。
"不"的部分是,不幸的是,从代码的角度来看,我们不能用一个线程来实现这一点。
输入/输出是很多程序的瓶颈,所以这只是你必须优化和处理的事情。
这不是C++或其他什么的问题,它只是CPU支持的问题:如果底层硬件无法支持,C++就无法为您提供这样的功能。
x86指令没有这样的功能,但AFAIK较新的PPC版本有。如果你想走硬件路线,你应该首先检查你目前使用的硬件:不同的x86 CPU的内存延迟有很大不同。
您可以优化内存写入。
- 压缩您写入的数据以节省内存带宽
- 在本地写入一个连续的内存块,以更有效地使用处理器的写入缓冲区
- 从一个线程编写以防止错误共享
- 也许__builtin_prefetch可以帮上忙,但我不确定
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- 为异步发送缓冲区保留内存(提升 asio 套接字)
- C++:异步写入内存
- 异步共享内存读/写
- 异步c++代码中的内存管理
- 将波形加载到内存中,然后使用Win32 API异步播放声音
- 内存尖峰-提高ASIO异步读取