Size: a a a

Язык программирования Julia / Julia programming language

2020 March 18

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
сейчас я делаю product(fill(0:1, n)...)
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
и это нехорошо
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
fill скорее всего аллоцирует, мб вынести его вовне?
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
да не, он аллоцирует уже после того как создан объект
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
то есть пробуешь iterate(...), и там слишком много всего
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
можно MWE?
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
явным циклом пробовали?
for i in Base.Iterators.product(a,b,c,d)
...
end
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
сейчас попробую )
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
using BenchmarkTools
itr = Base.Iterators.product(fill(0:1, 10)...)
@benchmark for x in itr end
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
BenchmarkTools.Trial: 
 memory estimate:  528.00 KiB
 allocs estimate:  3072
 --------------
 minimum time:     77.896 μs (0.00% GC)
 median time:      84.036 μs (0.00% GC)
 mean time:        101.391 μs (14.36% GC)
 maximum time:     2.149 ms (89.95% GC)
 --------------
 samples:          10000
 evals/sample:     1
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
я понял, наверное я не прав, что не в функцию оформил
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
function iterateme(itr)
   cnt = 0
   for x in itr
       cnt += 1
   end
   cnt
end

@benchmark iterateme($itr)
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
h(itr) = (for x in itr end) 
@benchmark h(itr)
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
BenchmarkTools.Trial:
 memory estimate:  0 bytes
 allocs estimate:  0
 --------------
 minimum time:     424.623 ns (0.00% GC)
 median time:      453.769 ns (0.00% GC)
 mean time:        494.182 ns (0.00% GC)
 maximum time:     1.938 μs (0.00% GC)
 --------------
 samples:          10000
 evals/sample:     199
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
ладно, буду надеяться, что и внутри моих функций всё будет так же быстро, спасибо )
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Только @benchmark h($itr)
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
@benchmark iterateme($itr)
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
да
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Но вообще это подозрительно, есть шанс, что он вообще что-нибудь в районе нуля выдаст, там очень умный оптимизатор, может догадаться, что цикл пустой и удалить его.
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
блин
источник