2012-04-03 108 views
-3

通過調用_mm_stream_si64x()來實現性能增益的示例程序是什麼?什麼是通過調用_mm_stream_si64x()來實現性能增益的示例程序?

上_mm_stream_si64x MSDN文章:http://msdn.microsoft.com/en-us/library/35b8kssy.aspx

+0

你是什麼意思?你想我們寫嗎? – chikuba 2012-04-03 21:14:57

+0

我的意思就是問題是措辭。這個問題的改寫:什麼是一個示例程序,由於沒有調用_mm_stream_si64x()而不必要地緩慢? – 2012-04-03 21:18:42

+0

我對這個問題所收到的多個讚譽感興趣。有人會關心解釋嗎?我從來沒有猜到關於如何最好地調用一個內部函數的問題會引發低估。 – 2012-04-03 22:20:40

回答

1

下面是一個例子,假設源和目的都是足夠大:

const char *source; 
char *destination; 
for (size_t offset= 0; offset<100*1024*1024; offset+= 64) 
{ 
    *(__int64 *)(destination + offset)= *(__int64 *)(source + offset); 
} 

如果你這樣做手工,而不是使用_mm_stream_si64x,你有效地刷新緩存。

1

就像參考稱,_mm_stream_si64x內在寫入到內存位置目的地指向直接,而無需編寫目的地到緩存中。因此,如果你想將數據複製到Dest指針,但不計劃直接訪問Dest指針中的數據,那麼這個內在函數將會在等效的_mm_stream_si64內部實現「性能增益」。

相關問題