Q
複製內存塊
10
A
回答
4
如果你需要自己實現這樣的功能,我建議你檢查Duff's Device是否必須有效地完成。
38
std::memcpy
怎麼樣?
0
2
閱讀您的評論,這聽起來像你可能想要使用並行。有指示要做到這一點,但它們只能在寄存器上運行,而不是在內存中運行。
這是因爲計算機架構的方式(我假設x86)。
一次只能訪問一個內存位置,因爲計算機只有一個地址總線。如果您嘗試一次訪問多個位置,則會導致公交車超載,因此無法正常工作。
如果你可以把你需要的數據放到寄存器中,那麼你可以使用很多很酷的處理器指令,比如MMX或SSE來執行並行計算。但至於並行複製內存,這是不可能的。
正如其他人所說,使用memcpy。它的可靠性,調試性和快速性。
0
REP MOVSD在彙編中可能嗎?很難說沒有關於你想要複製什麼的更多信息......或者,你也可以重新編程DMA控制器來實現它,但實際上它最終會比使用處理器慢。 :-)
1
如果原點和來源重疊,請使用memmove()。通常,memcpy()和memmove()已經被編譯器的clib高度優化了。如果你確實寫了一個替代品,至少要把它與clib版本進行比較,以確保你不會減慢你的代碼。
我已經由5000行以上的功能塊被稱爲所有的時間10000次
此外,考慮改變你的數據結構。也許而不是二維數組,你可以有一個指向二級數組的指針數組(列)。然後,而不是複製整個行,您只需複製或移動指針。你可以將列數組合併到一個自由列表中,這樣就不會花費大量時間分配和釋放它們。
相關問題
- 1. 將內存塊複製到內存的另一部分
- 2. 問題複製內存時
- 3. 內存複製功能
- 4. 使用memcpy複製內存塊時的問題
- 5. 複製時使用的理想內存塊大小是多少?
- 6. 複製C++中的中小型內存塊的最快方法
- 7. 從intptr複製內存內容
- 8. 每塊文件複製塊
- 9. java塊內存
- 10. HDFS不復制塊
- 11. 內存複製和內存比較單一
- 12. 將內存中的數據複製到內存時有多深?
- 13. 有效地從私有內存複製到本地內存
- 14. OpenCL - 將樹複製到設備內存
- 15. 複製到CUDA到設備內存CUDA
- 16. NSString基礎 - 內存 - 保留 - 複製
- 17. 將Packagepart複製到文件或內存
- 18. 將樹複製到GPU內存
- 19. 複製整個對象在內存
- 20. 複製串在C - 內存問題:
- 21. 複製由cudaMallocPitch分配的內存
- 22. CUDA零複製內存考慮事項
- 23. 內存泄漏時元帥。複製
- 24. 計數內存塊
- 25. 塊內存管理
- 26. 複製內容
- 27. Halide:將一塊內存複製到重疊位置(同一圖像)
- 28. aligned_alloc複製分配構造函數中的內存塊在釋放時崩潰
- 29. 奇怪的內存泄漏與塊和在ARC中以某種方式複製
- 30. Linux內核模塊是否有任何內存限制?
是的,使用memcpy,因爲它通常是目標架構的最佳選擇。在x86架構上,最佳實現使用一些128位SSE寄存器。 – 2009-06-03 11:55:30
以及我已經嘗試過。什麼是memcopy,它一次只複製一行。想想我有一個由5000行或更多行組成的塊,並且在一個被所有時間調用10000次的函數中。 – 2009-06-03 11:57:10