【问题标题】:Preallocate string memory in PHP在 PHP 中预分配字符串内存
【发布时间】:2011-04-02 16:14:35
【问题描述】:

是否可以在 PHP 中为字符串预分配内存或将字符串设置为固定大小?

我生成了一个随机字符串,它总是 32 个字符长,并且它当前在字符串的末尾连接一个字符;我想如果我可以使用一个恒定大小的字符串会更有效率。

【问题讨论】:

  • 如果您不得不担心这些微小的优化,那么 PHP 可能一开始就是错误的语言。

标签: php memory-management string-concatenation


【解决方案1】:

您可以使用str_repeat() 预先生成一个包含 32 个空格的字符串,然后像这样访问每个字符:

$string[3] = 'a';

注意:请参阅手册中的String access and modification by character,了解相关内容。


我想这会导致更少的内存(重新)分配。

但是,真的:

  • 您不必担心这种微优化...
  • 我不确定字符串是如何在 PHP 中实现的(您必须查看它的源代码),所以不确定这个想法是否会更好地发挥性能。李>

【讨论】:

  • 谢谢。刚刚对其进行了测试,连接速度提高了 30% 左右……去看看。我可能会在这个周末的某个时候查看源代码。
猜你喜欢
  • 2016-07-01
  • 2011-03-22
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-23
  • 1970-01-01
相关资源
最近更新 更多