记录一次rust浮点数计算没有java速度快的例子

不同的电脑执行如下代码可能会有不同的结果。但是我在同一台机器上的结果,java会比rust快5倍。

java代码:

java 复制代码
public class Test {
    private static final int MAX = 10000000;
    public static void main(String[] args) {
        test(1, 3.141592653589793, 2.718281828459045, "Addition");
        test(2, 3.141592653589793, 2.718281828459045, "Subtraction");
        test(3, 3.141592653589793, 2.718281828459045, "Multiplication");
        test(4, 3.141592653589793, 2.718281828459045, "Division");
    }
    public static void test(int step, double a, double b, String msg) {
        long startTime = System.currentTimeMillis();
        double sum = 0;
        switch (step) {
            case 1 -> {
                for (int i = 0; i < MAX; i++) {
                    sum += a + b;
                }
            }
            case 2 -> {
                for (int i = 0; i < MAX; i++) {
                    sum += a - b;
                }
            }
            case 3 -> {
                for (int i = 0; i < MAX; i++) {
                    sum += a * b;
                }
            }
            case 4 -> {
                for (int i = 0; i < MAX; i++) {
                    sum += a / b;
                }
            }
        }
        long endTime = System.currentTimeMillis();
        System.out.println(msg + " Time taken: " + (endTime - startTime) + "ms result: " + sum);
    }
}

java代码的运行结果

bash 复制代码
Addition Time taken: 15ms result: 5.8598744811975874E7
Subtraction Time taken: 14ms result: 4233108.251312001
Multiplication Time taken: 17ms result: 8.539734223664734E7
Division Time taken: 15ms result: 1.155727349739092E7
rust 复制代码
fn main() {
    _test1(1, 3.141592653589793, 2.718281828459045, "Addition");
    _test1(2, 3.141592653589793, 2.718281828459045, "Subtraction");
    _test1(3, 3.141592653589793, 2.718281828459045, "Multiplication");
    _test1(4, 3.141592653589793, 2.718281828459045, "Division");
}
const MAX: usize = 10000000;
fn _test1(step: u8, a: f64, b: f64, msg: &str) {
    let start = std::time::Instant::now();
    let mut sum = 0.0;
    match step {
        1 => {
            for _ in 0..MAX {
                sum += a + b;
            }
        }
        2 => {
            for _ in 0..MAX {
                sum += a - b;
            }
        }
        3 => {
            for _ in 0..MAX {
                sum += a * b;
            }
        }
        4 => {
            for _ in 0..MAX {
                sum += a / b;
            }
        }
        _ => {
            println!("Invalid step");
        }
    }
    println!("{} Time take: {:?}ms result: {}", msg, start.elapsed().as_millis(), sum);
}
bash 复制代码
Addition Time take: 82ms result: 58598744.811975874
Subtraction Time take: 75ms result: 4233108.251312001
Multiplication Time take: 73ms result: 85397342.23664734
Division Time take: 70ms result: 11557273.49739092
相关推荐
Jack_hsfs5 分钟前
第6章Spring 管理的是对象,还是对象的说明书?
java·后端·spring
十二同学啊21 分钟前
Python 工程化详解:项目结构、依赖管理、代码质量、测试与部署
java·开发语言·python
YIN_尹25 分钟前
【git原理与使用】git基本操作及底层原理(一)
java·git·elasticsearch
Ramble_Naylor34 分钟前
Rust深度解读:高性能 Web 网关与 Axum 架构剖析
前端·架构·rust
程序员飞哥34 分钟前
AI 编程额度怎么用才不浪费?
java·前端·后端
yh弓长40 分钟前
Spring MVC 的请求链路
java·spring·mvc
拆房老料41 分钟前
【第四部分:Agentic 智能体设计模式】17. Agent 路由模式详解:从意图识别到动态模型选择
java·设计模式·ai编程·策略模式
樱花落木兰1 小时前
Redis 消息队列的可靠性演进:从 List、Pub/Sub 到 Stream 消费者组,以及 8.x 版本改变了什么
java·开发语言·经验分享·redis·分布式·python·软件工程
Hello.Reader1 小时前
100 人同时操作一座三维城市,为什么不需要服务器渲染 6000 帧?Rust + wgpu 多端并发架构实战
服务器·架构·rust
wtblszn1 小时前
凹版印刷机智慧运维物联网系统方案
java·运维·物联网