0

这是我的 ObjC epub 文件加密器代码的主要部分

@autoreleasepool {
    for(NSMutableString* epub in self.epubs){
        bookKey = [[NSMutableString alloc] initWithString:[self genRandStringLength:16]];
        [self performSelectorOnMainThread:@selector(encrypt:) withObject:[NSArray arrayWithObjects:epub,bookKey,nil] waitUntilDone:YES];
    }
}

选择器“加密”包括这些方法调用

  • 为 epub 提取创建文件夹
  • 解压 epub 文件并将内容文件放入解压文件夹
  • 为加密的 epub 创建 ZipFile
  • 读取提取文件夹中的每个文件,创建 ZipWriteStream 并加密文件数据
  • 将每个加密数据流写入 ZipFile
  • 关闭 ZipFile 并将 zip 扩展名更改为 .epub

刚开始时,该过程非常安静。但是随着更多文件的写入,这个过程变得越来越慢。很抱歉,由于我的公司保密政策,我无法公开选择器的定义。但我很确定问题不在于它。下面是控制台日志示例。实际上这些文件只是具有不同名称的同一文件的克隆

  • Epub 名称:A.epub
    • 书号:4151FDD721564E40
    • 花费时间:0.440156
  • Epub 名称:B.epub
    • 图书密钥:BC23C09C4625429E
    • 花费时间:0.675541
  • Epub 名称:C.epub
    • 书号:AF872798FAEA4EDE
    • 花费时间:0.974213
  • Epub 名称:D.epub
    • 书号:250C319928E54D2C
    • 花费时间:1.332154
  • Epub 名称:E.epub
    • 图书密钥:EC4EC65605D246EB
    • 花费时间:1.705329
  • Epub 名称:F.epub
    • 书号:E10588A8CB584ACD
    • 花费时间:2.209807
  • Epub 名称:G.epub
    • 书号:9B572BF9428E4DFB
    • 花费时间:2.797980
  • Epub 名称:H.epub
    • 书号:BC05B2A629C44A85
    • 花费时间:3.389614
  • 电子版名称:I.epub
    • 书号:79DB7AAFC8CA4655
    • 花费时间:4.936718
  • Epub 名称:J.epub
    • 书号:B0413DF2356048A7
    • 花费时间:5.441939
4

1 回答 1

0

您应该使用 Instruments 中的 Time Profile 工具来分析您的程序,并查看花费了哪些时间。此外,如果内存增长成为问题,则该循环的内部自动释放池可能会有所帮助。

(为了将来参考,“我很确定这不是 X”几乎总是最终意味着“它是 X”;))

于 2012-12-12T06:06:59.457 回答