Я написал простой цикл for в Delphi и перевел его на Джулию. Время выполнения программы Delphi, по сравнению с программой Юлии, просто жалкое: Джулия в 7 раз быстрее - смотрите программу и результаты.
Я пытаюсь понять, как это возможно, ведь Delphi должен был стать одним из самых быстрых языков на планете!
Я хочу сравнить код ASM, созданный Джулией, с кодом ASM, созданным Delphi. В Delphi мне достаточно одного клика, чтобы получить этот код. Где я могу увидеть код ASM для конкретной функции в Julia?
using BenchmarkTools
println("----------- Test for loops")
# test for loops
function for_fun(a)
total = 0
big = 0
small = 0
for i in 1:a
total += 1
if i > 500000
big += 1
else
small += 1
end
end
return (total, small, big)
end
res_for = for_fun(1000000000)
println(res_for)
@btime for_fun(1000000000)
потому что Delphi должен был стать одним из самых быстрых языков на планете! LOL, что? Может во время разработки? Вопросы и ответы о переполнении стека часто показывают, что его компилятор делает довольно глупый ассемблер, или упоминают тот факт, что они хотят использовать встроенный ассемблер, потому что компилятор плохо справляется с вещами, с которыми у GCC и clang не было бы проблем в C или C++. . Я думаю, хорошо известно, что оптимизатор Delphi намного хуже современных GCC и clang.





Вы используете макрос @code_native, применяемый к вызову функции. Вот пример
julia> @code_native 1+1
.text
.file "+"
.globl "julia_+_13305" # -- Begin function julia_+_13305
.p2align 4, 0x90
.type "julia_+_13305",@function
"julia_+_13305": # @"julia_+_13305"
; ┌ @ int.jl:87 within `+`
.cfi_startproc
# %bb.0: # %top
leaq (%rdi,%rsi), %rax
retq
.Lfunc_end0:
.size "julia_+_13305", .Lfunc_end0-"julia_+_13305"
.cfi_endproc
; └
# -- End function
.section ".note.GNU-stack","",@progbits
Суффиксы, добавленные к более распространенным версиям инструкций, с которыми вы, вероятно, знакомы, сообщают вам ширину — q означает 64 бита. Это синтаксис сборки GNU.
«Предполагалось, что Delphi станет одним из самых быстрых языков на планете!» Не верьте маркетинговой рекламе, такого никогда не было.