Skip to content

Instantly share code, notes, and snippets.

@tanhit243
Created January 29, 2023 16:39
Show Gist options
  • Save tanhit243/f907bc609c304baf232f40fbe6d364ac to your computer and use it in GitHub Desktop.
Save tanhit243/f907bc609c304baf232f40fbe6d364ac to your computer and use it in GitHub Desktop.
:info_neon: Chuyên mục MIL - Monday I learn - 008
Nhân dịp đầu năm 2023 em xin chúc mọi người mạnh khỏe, vui vẻ và thành công ạ.
Trong số này em xin giới thiệu về một trong những ý tưởng có thể cải thiện tốc độ chạy unitest hay cụ thể rspec.
Nếu mọi người để ý thì khi sử dụng rspec thì đều chạy trên 1 process duy nhất.
Điều này có lẽ sẽ phù hợp về thời kì đầu năm 2000 vì CPU có 1 đến 2 nhân nhưng bây giờ có lẽ là hơi lạc hậu khi CPU đã có tới 4 nhân, 8 luồng và hơn thế nữa.
Việc sử dụng rspec trên 1 process duy nhất khiến thời gian chạy rất lâu và không tối ưu resource chúng ta có.
Vậy một câu hỏi đặt ra là chúng ta có thể sử dụng nhiều process hơn của CPU không?
Câu trả lời là có và một chiếc gem https://github.com/grosser/parallel_tests sẽ giải quyết giúp ta vấn đề này.
Ví dụ:
Dự án của chúng ta đang có 2649 examples
Thông tin:
Vendor ID: GenuineIntel
Model name: Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz
CPU family: 6
Model: 60
Thread(s) per core: 2
Core(s) per socket: 4
Kết quả chạy thông thường:
Finished in 5 minutes 36 seconds (files took 4.38 seconds to load)
2649 examples, 0 failures
Kết quả chạy với parallel_tests:
2649 examples, 1 failure
Took 140 seconds (2:20)
Chúng ta có thể thấy thời gian chạy unitest với parallel_tests là nhanh gần như gấp đôi.
Mong rằng đây cũng là một ý tưởng để chúng ta có thể chạy các unitest được tối ưu và nhanh hơn trong tương lai.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment