gpt4 book ai didi

javascript - 迭代脚本的内存消耗

转载 作者:IT老高 更新时间:2023-10-28 23:27:42 25 4
gpt4 key购买 nike

我有一个用 PHP 编写的脚本和用 Javascript 编写的相同脚本。
它迭代一百万次,每次都将一个字符串剥离到一个数组中,并将第一个数组项分配给一个新变量。

PHP 是:

class First
{
public function Iterate()
{
$count = 1000000;
$test_string = '';
$test_array = '';
$first_word = '';
for($i=1; $i <= $count; $i++){
$test_string = 'This is a test string';
//could use explode but no explode in js
$test_array = split(" ", $test_string);
$first_word = $test_array[0];
}
}
}
$first = new First();
$first->Iterate();

而 Javascript 是:

function First() {
this.Iterate = function() {
count = 1000000;
test_string = '';
test_array = '';
first_word = '';
for(var i=1;i <= count; i++){
test_string = 'This is a test string';
test_array = test_string.split(" ");
first_word = test_array[0];
}
}
}
first = new First();
first.Iterate();

我使用 PHP-CLI 5.3.10 运行 PHP,使用 Node v0.6.12 运行 Javascript。

对于 PHP,我使用“memory_get_usage()”,对于 Javascript,我使用“process.memoryUsage()”。我在脚本的开头运行它们,然后在结尾,然后用 start 减去 end,最后将字节数转换为 mb。

PHP 使用 0.00065 mb 的内存,而 Javascript 使用 0.25 mb,但是 PHP 需要 4 秒,而 Javascript 需要 0.71 秒。我已经在 2 台不同的机器上运行了结果。

有谁知道为什么 Javascript 的内存使用率会比 PHP 高得多(尽管 Javascript 的执行速度要快得多)?

我能想到的唯一解释是 V8 使用隐藏类的特性提高了速度但增加了内存消耗。

最佳答案

因为它们是非常不同的执行环境。

在 PHP 的情况下,源代码被转换为一系列操作码 - 有点像 p-code,而 v8 使用 JIT 编译器。后者会更倾向于使用内存,但我怀疑 2 之间内存使用的最大区别是由于垃圾收集的不同策略:

$test_array = split(" ", $test_string);

test_array = test_string.split(" ");

在堆栈上创建一个对象,该对象在每次迭代结束时被丢弃。

两者都没有提供太多控制运行时内存使用的访问权限。

关于javascript - 迭代脚本的内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com