우리는 고도로 실시간 응용 프로그램을 개발 중입니다. 응용 프로그램이 마크까지 수행하지 않습니다. 우리는 약간의 성능 프로파일을했고, 코드의 다음 조각 _chunkSize
이 1024000
및 NonceSize
입니다C# 코드 조각의 성능을 개선하기위한 제안
for (int i = 0; i < _chunkSize; i++)
{
outputData[i] = (byte)(inputText[i]^nonce[i % NonceSize]);
}
이 16
대부분의 시간 소요를 발견했다. inputText
, outputData
및 nonce
은 byte
어레이입니다.
성능을 개선하기 위해이 조각의 변경을 제안하십시오
편집
더 컨텍스트 줄 -
를 나는 내가의 사용자 지정 .NET 구현을 사용하여 내 자신의 DRM 시스템을 개발했다 CTR 암호화 알고리즘 영화가 재생되는 동안 1MB 청크가 암호화 된 미디어 파일에서 읽혀지고 메모리에서 해독되어 플레이어에게 공급됩니다. 암호 해독이 느리게 실행되므로 플레이어가 더 큰 크기의 영화 (> 300MB)를 재생하지 못합니다. 위 코드의 nonce는 암호화 된 모든 1MB 청크에 대해 런타임에 계산되고이를 해독하기 위해 청크와 XOR됩니다.
여기에서하는 일에 대해 더 많은 정보가 없으면 다른보다 효율적인 접근 방법을 제안하기가 어렵습니다. –
더 나은 하드웨어가 필요합니다. DDR4가 좋습니다. –
그것은'_chunkSize' 그 살인자 - 루프를 통해 1,024,000 반복이야. 루프의 몸체는 빠르지 만, 여전히 많은 시간을 소비 할 곳이 될 것입니다 : 루프 몸체를 최적화하면'_chunkSize'를 줄일 수 있는지 여부를 알 수 있습니다. – J0e3gan