170 похожих чатов

Сравнение скорости на arm64 Rust vs C++ vs C vs PHP

7.4 vs Node.js

1. Rust WIN
2. Node.js
3. C/C++
4. PHP


Код:

PHP

<?php

//var_dump(opcache_get_status()["jit"]);

$x = 1.000000000092;
$y = 1.00000021010848;
$i = 0;

$start = microtime(true);
while ($i < 100000000) {
$y = $y*$x;
$i++;
}
$stop = microtime(true);
echo "$y\nСкрипт был выполнен за " . ($stop - $start) . ' секунд';
//0.552 jit on
//1.83 notebook jit off
?>


C (компилятор clang LLVM) оптимизация -O3


#include <stdio.h>
#include <time.h>

//using namespace std;
int main()
{
clock_t start, stop;
long double x = 1.000000000092;
long double y = 1.00000021010848;
long int i = 0;
//int count;
//cin >> count;
start = clock ();
while (i < 100000000)
{
y = y*x;
//cout<< y;
//cout << "\n";
i++;
}
//cout <<printf("Loop required %f seconds", (stop - start) / CLK_TCK);printf("Loop required %f seconds", (stop - start) / CLK_TCK); "Hello World\n";
stop = clock();
printf("%f", y);
printf("%f \n");
printf("%f", (stop - start) / 1000.0);
//cout << CLOCKS_PER_SEC;
//unsigned int end = clock();
//unsigned int search = end - start;
return 0;
}


C++ (компилятор и настройки те же что и у С)

#include <iostream>
#include <ctime>

use namespace std;
int main(void)
{
clock_t start, stop;
long double x = 1.000000000092;
long double y = 1.00000021010848;
long int i = 0;
//int count;
//cin >> count;
start = clock ();
while (i < 100000000)
{
y = y*x;
//cout<< y;
//cout << "\n";
i++;
}
//cout << "Hello World\n";
stop = clock();
std::cout << y;
std::cout << "\n";
std::cout << (stop - start) / 1000.0;
//cout << CLOCKS_PER_SEC;
//unsigned int end = clock();
//unsigned int search = end - start;
return 0;
}





Node.js 17.4

let x=1.000000000092
let y=1.00000021010848
let i=0

console.time('clock')
while (i < 100000000)
{
y = y*x;
//cout<< y;
//cout << "\n";
i++;
}
console.log(y)
console.timeEnd('clock')



Rust


use std::time::{Duration, Instant};

fn main() {

let x: f64 = 1.000000000092;
let mut y: f64 = 1.00000021010848;
let mut i: i32 = 0;
//начало замера
let start = Instant::now();
while i < 100000000
{
y = y*x;
i = i + 1;
}
//конец замера
let duration = start.elapsed();
println!("y = {}", y);
println!("Time elapsed is: {:?}", duration);
}





Жду конструктивную критику или как можно лучше оптимизировать.

15 ответов

27 просмотров

Вот это у Вас 1. Rust WIN 2. Node.js 3. C/C++ 4. PHP На первом месте по скорости Rust?

мб условно какой-нибудь md5 вычислять для реальной нагрузки?

Стакан-dw Автор вопроса
Илюша 🎂
мб условно какой-нибудь md5 вычислять для реальной...

ну... например PHP функции это будут делать через Сишную библиотеку Так что верны ли будут результаты такого теста...

А где скорость?

Стакан-dw Автор вопроса
А
А где скорость?

Скрины чуть выше

Попробовать gcc, например

Стакан-dw Автор вопроса

7.3 ms

Стакан-dw Автор вопроса
Стакан dw
7.3 ms

Код тот же Время исполнения. А результат не вывел потому что в gcc чуть по другому строки выводятся, я хз и забил на вывод строки. Но он не влияет

Стакан-dw Автор вопроса
Alexey Ermakov
а как в gcc строки выводятся?

clang принял код выше (и вывел строку) а gcc начал ругаться. По этому я не учитывал результат gcc

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта