我們正在開發高度實時的應用程序。該應用程序不符合標誌。我們做了一些性能分析,發現下面這段代碼利用的大部分時間提高一塊c#代碼的性能的建議
for (int i = 0; i < _chunkSize; i++)
{
outputData[i] = (byte)(inputText[i]^nonce[i % NonceSize]);
}
哪裏_chunkSize
是1024000
和NonceSize
是16
。變量inputText
,outputData
和nonce
是byte
陣列。
請建議改變這個片段以提高性能
編輯
爲了讓更多的上下文 -
我有一個開發,我使用一個自定義的.NET實現我自己的DRM系統CTR加密算法。在播放電影時,將從加密的媒體文件中讀取1 MB大塊電影,在內存中解密並饋送給播放器。解密運行緩慢,因此播放器無法播放更大尺寸(> 300MB)的電影。上述代碼中的隨機數是在運行時爲每個加密的1 MB塊計算的,並與該塊進行XOR解密。
沒有關於你在這裏做什麼的更多信息,很難提出不同的,更有效的方法。 –
你需要更好的硬件。 DDR4很不錯。 –
這是'_chunkSize',這是殺手 - 通過循環進行1,024,000次迭代。循環的主體可以很快,但這仍然是你花費大量時間的地方:優化循環的主體將比產生/ _如何減少'_chunkSize'少得多。 – J0e3gan