Java比优化的Rust程序更快
Danyal Mh
嗨,起初,我是一个Rust程序员,并为它写了一些项目和一个框架,在听说动态编译技术后,JVM对我有吸引力,我用Rust写了一个程序,为编译器设置了许多优化标志以获得最佳性能,并在java中写了实例。
在热身时间过后,我看到JVM的表现令人惊讶,它是一头野兽,在性能上可以击败Rust。
Rust结果: 10,648 _ 6,678 _ 8,274
Java结果: 8,661 _ 9,608 _ 6,302
平均12次的基准。
Rust: 9,948
Java:8,693
Java代码 public static void main(String[] args) { for (int q = 0; q < 1001; q++) { long tInit = System.nanoTime(); ArrayList arr = new ArrayList(100); for (int i = 0; i < 100 ; i++) { arr.add(new CClass("fname", "lname", i % 30)); } for (int i = 0; i < 100 ; i++) { CClass cls = arr.get(i); cls.validation(); } if (q > 997) { System.out.println(System.nanoTime() - tInit); } } }
Rust Code : fn main() { for _ in 0..3 { let now = std::time::Instant::now(); // =============================================== let mut v = Vec::with_capacity(100); for i in 0..100 { v.push(Class::new("fname", "fname", i % 30)); } for i in 0..100 { let cls = v.get(i).unwrap(); cls.validation(); } // =============================================== let now2 = std::time::Instant::now(); println!("==> {}", now2.duration_since(now).as_nanos()); } }
我使用了一些Rust编译器标志,以使性能最大化。 [build] rustflags=["-C", "target-cpu=native"] [profile.dev] lto = true opt-level = 3
最后,我越来越喜欢JVM,java/Scala。
伟大的语言,巨大的生态系统,和惊人的性能。
阿里巴巴、Linkedin、Twitter、Amazon等公司80%的后端工作都使用JVM。
这不仅仅是为了JVM的独立或生产力
它是为了 惊人的性能和惊人的稳定性