Laravel: 为什么数据库播种器在我的快速电脑上这么慢

Laravel: Why database Seeder so slow on my fast pc

我是 运行 典型的 Laravel 版本 5.2.23,在 Win10 上的 Homestead Vagrant 盒子上,配备快速 NVMe SSD、Skylake i7 6700K cpu、16GB 内存。 VirtualBox 5.0.26 r108824。我有 4GB 和 2 CPU 分配给虚拟机。几乎一切都是默认的。

这个非常基本的用户 table 播种器需要 45 秒才能完成 1000 条记录,而在使用 Laravel 4.2 之前,我在速度较慢的电脑上获得了更快的性能。当我访问 localhost 站点时,它会快速加载数据(我只是在 index.html 中回显了整个 1000 条记录用户 table )所以它看起来不像是 VM 和 Win10 之间的网络流量变慢,但是idk.

播种机在下方。

class UsersTableSeeder extends Seeder {

public function run() {
    DB::table('users')->truncate();

    for( $ii = 0; $ii < 1000; $ii++)
    DB::table('users')->insert([
        'name' => $ii,
        'email' => $ii.'@gmail.com',
        'password' => bcrypt('secret'),
    ]);


}

}

我知道有时 Windows 基于 Linux 的虚拟机的文件系统会变慢,但我不确定这是怎么回事。任何帮助都会很棒。

因为 bcrypt 函数调用很慢。通常一次操作大约需要 50 毫秒(取决于机器,它可能会更快)。 (50ms * 1000op) / 1000ms = 50s。

查看更多Why is php's password_hash so slow?