代码之家  ›  专栏  ›  技术社区  ›  catlan

iPhone低内存占用的CSV解析器

  •  7
  • catlan  · 技术社区  · 15 年前

    CSV parser 我使用的内存占用空间很大。有人推荐内存占用少的吗?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Mark Bessey    15 年前

    您可能应该逐行执行此操作,而不是读取整个文件,对其进行解析,然后返回包含其中所有行的数组。在任何情况下,链接到的代码都会在循环中生成无数个临时对象,这意味着它将有非常高的内存开销。

    一个快速解决方法是在循环的lop处创建一个NSAutoreleasePool,并在底部将其排空:

    while ( ![scanner isAtEnd] ) {        
        NSAutoreleasePool *innerPool = [[NSAutoreleasePool alloc] init];
    

    ... 一堆代码。。。

        [innerPool drain];
    }
    

        2
  •  3
  •   Matt Gallagher    15 年前

    还有其他一些CSV解析器可供尝试:

    您可以进行实验,看看两者是否都能降低内存开销。

    这将是理论上开销最低的解决方案。如果您真的需要低开销,您应该调整现有的解决方案来做到这一点(我没有任何关于如何做到这一点的建议)。

        3
  •  0
  •   Todd Ditchendorf    15 年前

    它不是一个CSV解析器,但是我的开源Cocoa ParseKit框架有一个强大的/方便的/可配置的字符串标记器,对于CSV或其他类型的解析/标记化可能很方便。

    http://parsekit.com

    http://parsekit.com/tokenization.html

    PKTokenizer类:

    http://github.com/itod/parsekit/blob/master/include/ParseKit/PKTokenizer.h http://github.com/itod/parsekit/blob/master/src/PKTokenizer.m