我有以下瓶頸功能。如何優化週期?
typedef unsigned char byte;
void CompareArrays(const byte * p1Start, const byte * p1End, const byte * p2, byte * p3)
{
const byte b1 = 128-30;
const byte b2 = 128+30;
for (const byte * p1 = p1Start; p1 != p1End; ++p1, ++p2, ++p3) {
*p3 = (*p1 < *p2) ? b1 : b2;
}
}
我想用SSE2內部函數代替C++
代碼。我試過,但它使用了有符號比較。我需要無符號比較。
是否有任何技巧(SSE,SSE2,SSSE3)來解決我的問題?
注: 我不想在這種情況下使用多線程。
你知道你的目標是哪個處理器架構嗎?一次處理一個64位字塊(在寄存器中進行比較)可以在一定程度上減少內存總線爭用。編譯器的彙編代碼應該有助於提供想法... ...並不是SSE專門用於浮點,而不是整數操作? – 2010-10-21 11:58:44
SSE有一些整數指令。 – Crashworks 2010-10-21 11:59:15
爲什麼不讓他們簽名?一個簡單的異或0x80與比較前的每個元素都可以完成這項工作。 – ruslik 2010-10-21 12:01:27