【发布时间】:2015-03-29 18:59:08
【问题描述】:
我正在编写一个 Mp3 播放器。我正在从服务器下载 mp3 文件。文件已加密。我客户的加密方法很简单。他们只是在每个 X 字节中插入一个位。就像代码中的 323 一样。但是解密过程需要很长时间。 CPU使用率很大?为什么?我能做什么?
_mappedData = [[NSMutableData dataWithMappedContentsOfFile:_cachedPath] mutableCopy];
Singleton *singleton = [Singleton sharedSingleton];
NSLog(@"Decryption started");
if(singleton.playerMode == PLAYERMODELISTEN)
{
int i = 323;
while (i < [_mappedData length]) {
[_mappedData replaceBytesInRange:NSMakeRange(i, 1) withBytes:NULL length:0];
//CFDataDeleteBytes((CFMutableDataRef)_mappedData, CFRangeMake(i, 1000));
i += 323;
}
}
[General dismissGlobalHUD];
NSLog(@"Decryption completed");
【问题讨论】:
-
您是否进行了任何分析以查看一直在花费的时间?
-
我尝试使用仪器并捕获一些信息。但我找不到任何东西。
-
iOS 还是 OSX?文件有多大?为什么要在
NSMutableData上致电mutableCopy? -
映射文件的重点不是一次读入整个文件,甚至可能全部读入。但是您正在对整个文件进行更改,因此更改将创建对文件的读取和写入。文件 I/O 的时间成本很高。
-
iOS 项目。当我不使用 mutableCopy 时,项目正在崩溃。 EXC_BAD_ACCESS
标签: objective-c cpu-usage nsmutabledata