[英]Unexpected delay while returning a string
从函数返回字符串是否会有延迟的原因?
背景信息:我编写了一个简单的程序,该程序接受字母输入并输出这些字母的任何字谜。 它从包含数千个单词的超大型文本文件中检查单词。 它基本上将每个单词放入一个向量中,并检查它是否是字母的字谜,并打印出来。 它通常在1-15秒内完成,对此我感到满意。
当我尝试将其转换为一个函数,该函数返回的是一个字谜字串时,便出现了问题。 即使它仍然以相同的速度“输出”该单词,但是在此之后大约需要20秒才能真正返回字符串和cout。
为什么实际返回一个字符串要比输出字符串花费更长的时间,我该如何解决呢?
如有必要,我可以发布代码;
编辑:由于有15个文件,所以我以zip格式上载了项目。
http://www.mediafire.com/?c2gizpgcweg3iy4
为查看车祸这是我的代码而感到震惊。
如果要执行此操作,我想我将使用multimap<string, string>
或map<string, std::vector<string> >
(两者大致等效)。
我将从阅读单词表开始。 当我阅读每个单词时,我会创建一个副本并对该副本中的字母进行排序。 然后,将已排序/原始对插入到[multi]映射中,并以已排序的版本为键。
当我需要查找单词的字谜时,我会对该单词进行排序,然后在地图中查找排序后的版本,然后获取与该排序后的版本相匹配的所有原始单词。 之后,您几乎可以对他们进行任何操作。
就大小和速度而言,我希望有一个文件,例如39行,并且能够以每秒约3000个单词的速度读取输入和打印匹配的字谜(如果您希望以不同的方式看待它)大约每秒15 KB的输入)。 当然,这个估计值(?)是基于我使用6年的旧机器得出的。 使用较新的计算机,您应该可以做得更好。
由于所有单词都在输入过程中加载,因此,如果您返回单词而不是打印出来,我不希望这会降低到任何可感知的程度(实际上,如果您不打印出来,我希望它会有所提高)结果)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.