注意:这是对此问题的跟进。
我有一个“遗留”程序,需要对大块HTML进行数百个字符串匹配。例如,如果HTML与20多个字符串之一匹配,则执行某些操作。如果它与另外4个字符串之一匹配,则执行其他操作。有50-100组这些字符串需要匹配这些HTML块(通常是整个页面)。
我正在努力重构这个代码混乱,并尝试找到一个好的方法来进行所有这些匹配。
这段代码的性能要求非常严格。在进行这些匹配时,它不能等待I/O,因此它们需要在内存中。同时可能会有100多个该进程的副本同时运行,因此启动时的大量I/O可能导致其他副本的I/O缓慢。
考虑到这些要求,最有效的方法是仅将这些字符串的一个副本存储在RAM中(请参见我的上一篇链接问题)。
该程序当前在Windows上使用Microsoft编译器运行,但我希望保持解决方案尽可能跨平台,因此我不认为我想使用PE资源文件或其他内容。
映射外部文件可能有效,但然后我必须解决程序版本和数据版本保持同步的问题。通常情况下,一个不会改变而不影响另一个。此外,这需要一些文件“格式”,这增加了一层我宁愿没有的复杂性。
因此,在所有这些前言之后,似乎最好的解决方案是拥有一堆字符串数组,然后可以对其进行迭代。由于具有上述要求,这似乎有点凌乱,因为代码和数据混合在一起,但是是否有更好的处理这种情况的方法呢?
我有一个“遗留”程序,需要对大块HTML进行数百个字符串匹配。例如,如果HTML与20多个字符串之一匹配,则执行某些操作。如果它与另外4个字符串之一匹配,则执行其他操作。有50-100组这些字符串需要匹配这些HTML块(通常是整个页面)。
我正在努力重构这个代码混乱,并尝试找到一个好的方法来进行所有这些匹配。
这段代码的性能要求非常严格。在进行这些匹配时,它不能等待I/O,因此它们需要在内存中。同时可能会有100多个该进程的副本同时运行,因此启动时的大量I/O可能导致其他副本的I/O缓慢。
考虑到这些要求,最有效的方法是仅将这些字符串的一个副本存储在RAM中(请参见我的上一篇链接问题)。
该程序当前在Windows上使用Microsoft编译器运行,但我希望保持解决方案尽可能跨平台,因此我不认为我想使用PE资源文件或其他内容。
映射外部文件可能有效,但然后我必须解决程序版本和数据版本保持同步的问题。通常情况下,一个不会改变而不影响另一个。此外,这需要一些文件“格式”,这增加了一层我宁愿没有的复杂性。
因此,在所有这些前言之后,似乎最好的解决方案是拥有一堆字符串数组,然后可以对其进行迭代。由于具有上述要求,这似乎有点凌乱,因为代码和数据混合在一起,但是是否有更好的处理这种情况的方法呢?