尝试在 Windows 上编译了最新的 Ruby,版本是:
ruby -v
ruby 3.0.0dev (2020-12-22T22:20:14Z master 74a3569b59) [x64-mswin64_140]
先跑了一下 evt 的 http_server.rb
$ wrk -t 4 -c 8192 -d 5s http://127.0.0.1:3002
Running 5s test @ http://127.0.0.1:3002
4 threads and 8192 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 701.41ms 312.39ms 1.75s 80.00%
Req/Sec 8.39 1.86 15.00 82.93%
43 requests in 5.12s, 2.10KB read
Socket errors: connect 7176, read 0, write 66885, timeout 3
Requests/sec: 8.39
Transfer/sec: 419.54B
接下来跑 midori
wrk -t 4 -c 8192 -d 5s http://127.0.0.1:8080
Running 5s test @ http://127.0.0.1:8080
4 threads and 8192 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 88.24ms 156.39ms 1.92s 98.16%
Req/Sec 2.03k 2.28k 8.88k 82.46%
27624 requests in 5.12s, 1.95MB read
Socket errors: connect 7176, read 0, write 64339, timeout 52
Requests/sec: 5392.87
Transfer/sec: 389.72KB
在 Windows 上就不追求性能了,只要能用就行。
发现跑完之后,过一会儿 midori 就出错:
C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/select.rb:25:in `select': Bad file descriptor (Errno::EBADF)
from C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/select.rb:25:in `select_wait'
from C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/select.rb:25:in `wait'
from C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/bundled.rb:39:in `run'
from C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/bundled.rb:150:in `close'
Run - Edit Configurations 把 Ruby SDK 那一项 改成 Use other SDK 然后选择一个 SDK 试试。
我个人觉得在不熟悉 Linux/Mac 的情况下 Windows 开发是最高效的,先不说在 VBox 虚拟机下会遇到奇葩的问题 (开个 IDE 要 3 分钟),在 Linux/Mac 开发没有很大的效率提升,反而因为不熟悉而降低了开发效率。
对于一个不熟悉 Linux 的初学者来说,如果学习 Ruby/Rails 需要先折腾一下 Linux 或者买个 Mac,何不学习 Python/Django 呢?