我最近发现我的一个学生正在做一个独立的项目,其中他使用非常大的字符串(2-4MB)作为字典中的值。
我从来没有理由要处理这么大的文本块,这让我想知道创建这么大的字符串是否存在性能问题。
除了简单地创建字符串,还有更好的方法吗?我意识到这个问题在很大程度上取决于上下文,但是我正在寻找可以涵盖多个可能用例的通用答案。
如果要处理这么多文本,该如何将其存储在代码中,并且与仅使用仅包含几个字符的普通字符串进行处理相比,您会做其他不同的事情吗?
最佳答案
这很大程度上取决于您对字符串的处理方式。我不确定Python如何存储字符串,但是我已经在XEmacs(类似于GNU Emacs)和Emacs Lisp的底层实现上做了很多工作,后者是像Python这样的动态语言,而且我知道字符串是如何在那里实现。字符串将被存储为类似于数组的内存块。在Python中创建大型数组并没有很大的问题,因此我不认为仅以这种方式存储字符串会导致性能问题。不过,请注意以下几点:
StringBuilder
类处理此问题。我不确定Python是否有完全等效的方法,但是您可以简单地创建一个数组,其中包含所有要连接的部分,然后使用''.join(array)
进行最后连接。 总而言之,我认为在简单的情况下,具有这样的大字符串是可以的,但是您应该考虑将要执行的各种操作以及它们的O(...)时间。
关于python - 如何最好地在Python中存储较大的文本序列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20939204/