Chương trình java chạy chậm hơn ở máy tính cấu hình cao hơn?

Tôi có một chương trình dùng để tìm ra tất cả các chuỗi con chung có độ dài lớn hơn k của 2 chuỗi. Tôi chạy trên máy tính để bàn số 1 là i7, ram 16g (ddr4), ổ cứng ssd 1T lại chậm hơn rất nhiều ở máy số 2 cũng là i7, ram 8g (ddr3), ổ ssd 512 . Nói chung các thông số phần cứng của máy 1 đều cao hơn máy 2. Mong mọi người giúp đỡ chỉ ra vì sao như vậy. Vừa mua con máy mới về, cấu hình ngon hơn mà ko dùng được thì chết. Tôi sẽ hậu tạ…

Anh đưa chi tiết cấu hình 2 máy lên đi ạ?

  • máy 1: Dell vostro 3670 MT, i7-8700(3.2ghz 12MB, thế hệ thứ 8) 16GB DDR4/ SSD 1T;

  • máy 2: Dell OptiPlex 3040, core i7 - 6700 @ 3.4ghz 3.41ghz, 8GB DDR3/ SSD 500gb.

Cả hai máy cùng cài hệ điều hành, cùng cài một bản java, cùng chạy một chương trình java. Vậy mà máy 2 lại nhanh hơn rất nhiều. Có phải do con CPU máy 2 la 3.4? Rất mong anh em giúp đỡ. mấy ngày hôm nay không tìm đươc lý do vì sao.

Cho hỏi bạn đã cấu hình VM của java 2 máy như thế nào? Còn nữa là nó chậm là chậm ntn? Run app lên chậm? hay thực thi tính toán chậm?

cám ơn anh em đã quan tâm.
khi chạy chương trình lên, đến phần chạy thuật toán tìm các xâu con chung giữa hai chuỗi thì ở máy thứ nhất nó tính toán rất lâu mới ra kết quả. trong khi đó máy 2 đã tính xong rồi. ra kết quả đều như nhau.
cả hai máy đều cài jdk1.8.0 vào ổ c. từ màn hình cmd chạy câu lệnh java -jar myfile.jar

bạn kiểm tra heap size nhé. Theo mình heap size 2 jvm khác nhau.
https://www.mkyong.com/java/find-out-your-java-heap-memory-size/

1 Like

câu lệnh chay file jar của chương trình trên 2 máy đều là:

java -Xms512m -Xmx1024m -jar myfile.jar

hoặc

java -Xms2G -Xmx4G -jar myfile.jar

kết quả máy 1 vẫn chạy chậm hơn máy 2 rất nhiều. tìm mãi vẫn chưa biết tại sao. có ai giúp mình với.

2 máy mới mua hay 1 máy mới mua 1 máy xài lâu rồi ? Nếu là cái thứ 2 thì có thể ảnh hưởng đến hiệu năng đấy (do bụi)

1 Like

Up source code cái file java lên xem. Có thể có vấn đề gì đó liên quan đến multi-thread.

1 Like

Cùng một chương trình và không dùng multi-thread Trong Hieu Nguyen ơi. máy 1 là máy vừa mua về, máy 2 là máy cũ. Tưởng cấu hình ngon hơn sẽ chạy nhanh hơn, đề xuất sếp cho mua, giờ …không biết nói thế nào.

bác dùng các tool monitor JVM để trace nguyên nhân, không thì không biết được đâu, một trong các tool là jconsole

2 Likes

Nguyên nhân là có một hàm chạy ở máy mới mất rất nhiều thời gian, vẫn hàm đó, chạy ở máy cũ lại không mất thời gian như vậy. Vậy mới không biết xử lý thế nào.

theo mình thấy thì con máy thứ con máy 1 xung có 3.2 con máy 2 xung 3.4 về cơ bản thì chương trình bạn viết ra chạy tuần tự lên xung nhịp cao hơn sẽ nhanh hơn . con máy 1 chỉ nhanh hơn khi bạn tận dụng đc các luồng của nó . nhưng đó là điều siêu khó .

3.4 với 3.2 không nói lên được nhiều điều vì nó chênh lệch không nhiều, nhất là trong trường hợp CPU work khoảng 50% đổ xuống, vì OS cũng sẽ không dành hết tài nguyên cho app đâu, app nhẹ thì không có gì khác biệt. Chỉ khi chúng nó chạy mà CPU tiêu tốn rất nhiều thì mới có chênh lệch

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?