Size: a a a

2018 November 21

M

MIT/Benzands in ru.nim.talks
Amir Fazleev
Зато фортран какой молодец)
ну то фортран
источник

AF

Amir Fazleev in ru.nim.talks
--passL:-static я понимаю?
источник

M

MIT/Benzands in ru.nim.talks
а зачем static? 🤔
источник

M

MIT/Benzands in ru.nim.talks
Ну серьёзно, попробуй без LTO и -freroll-loops у C++
источник

AF

Amir Fazleev in ru.nim.talks
cpp это cpp а не бекенд нима если что
источник

M

MIT/Benzands in ru.nim.talks
Amir Fazleev
cpp это cpp а не бекенд нима если что
я понимаю
источник

M

MIT/Benzands in ru.nim.talks
freroll-loops вообще вон для оптимизации размера включают, а не скорости
источник

M

MIT/Benzands in ru.nim.talks
источник

AF

Amir Fazleev in ru.nim.talks
Вот результаты когда аргументы уже внутри программы:
perf stat -r 3 ./main
[dlang ldc]
ldc2 -O3 -ffast-math -reroll-loops -flto=thin main.d
1,48002 +- 0,00453

ldc2 -O3 main.d
1,5083 +- 0,0148

gdc -Ofast -LTO -ffast-math -funroll-loops -march=native main.d -o main
10,3748 +- 0,0365 seconds time elapsed

gdc -O3 main.d -o main
12,3032 +- 0,0303

[crystal]
crystal build main.cr --release
11,3591 +- 0,0303

[rust]
lto = true
32,236s

without lto
13,103

[c and cpp o3 and ofast - similar]
[c]
gcc -O3 -ffast-math -funroll-loops -LTO -lm main.c -o main
6,6119

clang -O3 -ffast-math -freroll-loops -flto=thin main.c -o main
12,8160

[cpp]
g++ -O3 -ffast-math -funroll-loops -LTO -lm main.cpp -o main
6,6000

clang++ -O3 -ffast-math -freroll-loops -flto=thin main.cpp -o main
12,8419

[python pypy3]
time pypy3 main.py
59,331s

[python numba]
14,340s

[nim inline]
proc `^`*[T](x: T, y: Natural): T {.inline.} =
in
math.nim
nim c -d:release ./untitled.nim
10,515s

[nim]
2m47,514s

[gfortran]
gfortran -Ofast -LTO -ffast-math -funroll-loops -march=native -o main main.f
1,92337

gfortran -Ofast -LTO -ffast-math -funroll-loops -o main main.f
0m3,558s

gfortran -O3 -LTO -ffast-math -funroll-loops -march=native -o main main.f
0m12,571s

gfortran -O3 -o main main.f
0m13,550s
источник

AF

Amir Fazleev in ru.nim.talks
MIT/Benzands
Ну серьёзно, попробуй без LTO и -freroll-loops у C++
[doaxan@doaxan-pc LPS_CPP]$ g++ -Ofast -ffast-math -lm main2.cpp -o main2
[doaxan@doaxan-pc LPS_CPP]$ time ./main2 3 4
6876

real    3m24,032s
источник

M

MIT/Benzands in ru.nim.talks
а с -O3 сможешь потестить? :D
источник

M

MIT/Benzands in ru.nim.talks
ну а так, мб код какой-то неправильный, я даже не знаю
источник

M

MIT/Benzands in ru.nim.talks
но можешь на форум нима запостить ссылку на гитхаб
источник

AF

Amir Fazleev in ru.nim.talks
MIT/Benzands
а с -O3 сможешь потестить? :D
Медленнее же будет)
источник

M

MIT/Benzands in ru.nim.talks
Amir Fazleev
Медленнее же будет)
оптимизации не всегда ускоряют
источник

AF

Amir Fazleev in ru.nim.talks
Хочу ним с Ofast запустить)
источник

M

MIT/Benzands in ru.nim.talks
поэтому их по умолчанию не юзают
источник

M

MIT/Benzands in ru.nim.talks
так бы все проги -Ofast или -O3 юзали
источник

AF

Amir Fazleev in ru.nim.talks
Хороший вопрос почему не юзают, мой опыт говорит о том что O3 всегда дает +, лису с O3 собирают например в продакшен
источник

A

Andrew in ru.nim.talks
Amir Fazleev
Хороший вопрос почему не юзают, мой опыт говорит о том что O3 всегда дает +, лису с O3 собирают например в продакшен
Думаю это связано со сложностью компиляторов. Они стали настолько сложными, что уже сами их авторы немогут сказать, к чему могут привести ключи типа -O3
источник