bash:为数组预分配内存

use*_*001 3 performance bash memory array

可以bash为定义大小的数组预先分配内存吗?我declare -a arr在循环 ( arr+=("$str")) 中迭代地将字符串添加到数组(由 声明),并且想知道是否可以通过预分配适当大小的内存(例如,包含不大于 512 个字符的字符串的 10,000 个元素)来提高性能。

Kus*_*nda 5

不,这在bash.

要加速您的脚本,请尝试重新思考您的程序流程和逻辑。它是非常很少有必要在一个变量或数组海量数据读取。

大多数 Unix 工具都是过滤器,它允许您将数据从管道的一个阶段发送到下一个阶段,而无需在内存中存储大量初始或中间数据(通常一次只是文件中的一行)。将数据集读入变量然后在 shell 中对其进行操作的情况并不常见。更常见的是对数据运行转换,同时可能聚合其中的一部分。

如果您发现自己在处理包含多个单词的 shell 变量,那么很可能有一种更有效的方法。

  • @user001 听起来您正在重新发明 `xargs`。 (3认同)
  • 感谢您对 `xargs` 的建议。我能够通过使用 `xargs -L <N> ./script.sh` 来实现所需的行为,其中 script.sh 只包含一个简短的前导码,然后是 `printf "%s\n" "$@"`。 (2认同)