![]() |
Ответ: Великая битва 4х языков программирования на простейшей задачке
Цитата:
это, кстати, ответ на вопрос Платона, почему деревья не подходят. |
Ответ: Великая битва 4х языков программирования на простейшей задачке
да не, на верхнем уровне по любому должно быть дерево. просто на ноде дерева должен висеть не один кубик, а массив 16х16х16 например.
|
Ответ: Великая битва 4х языков программирования на простейшей задачке
Вот снова затестил, такой результат:
Multidimensional allocate: 1.258ms Multidimensional fill: 701.627ms Multidimensional get 65536 times: 1.09ms Flattened allocate: 1.751ms Flattened fill: 212.648ms Flattened get 65536 times: 0.331ms Jagged allocate: 460.847ms Jagged fill: 286.233ms Jagged get 65536 times: 0.455ms Вот код с тремя вариантами: |
Ответ: Великая битва 4х языков программирования на простейшей задачке
Вложений: 1
оно берется с кэша! Мока!
Код:
using System; MD allocate 6 fill 198 get(order) 149 get(rand) 956 FLAT allocate 0.21 fill 39 get(order) 62.5 \ ??WTF get(rand) 59.58 / ??WTF JAGGED allocate 210 fill 52 get(order) 92 get(rand) 677 |
Ответ: Великая битва 4х языков программирования на простейшей задачке
Мои результаты (i5-2500K 3.3ГГц):
Multidimensional allocate: 4,948ms Multidimensional fill: 218,264ms Multidimensional get 65536 times: 0,148ms Flattened allocate: 0,239ms Flattened fill: 45,047ms Flattened get all times (ordered): 60,754ms Flattened get all times (random): 65,615ms Jagged allocate: 182,714ms Jagged fill: 66,86ms Jagged get all times (ordered): 99,008ms Jagged get all times (random): 748,584ms |
Ответ: Великая битва 4х языков программирования на простейшей задачке
вот у тебя тоже наблюдается аномалия на flatten. ordered тоже должен быть быстрее, чем random. но почему то нет. кто сможет объяснить почему?
правка: короче ето из-за оптимизирующего компилятора. вот так: Код:
elapsedFill = timer.ElapsedTicks; |
Ответ: Великая битва 4х языков программирования на простейшей задачке
причем на плюсах:
Код:
#include <iostream> естественно, сюда еще входит время обращение к массиву для получения индекса. |
Что-то я не смог избавиться от "оптимизаций компилятором", которые ухудшили результат получения данных при ordered и random индексах..
UPD: получилось. Intel Pentium 4 3.00 Ghz UPD2: Вот такие результаты: Код:
array size: 512 * 128 * 512 = 33554432 Код:
array size: 256 * 64 * 256 = 4194304 Это случаем не потому что там идёт какое-то разбиение участка памяти на куски из-за слишком больших размеров? Вот код обновил: |
Ответ: Великая битва 4х языков программирования на простейшей задачке
Результаты:
array size: 256 * 64 * 256 = 4194304 --- Multidimensional allocate: 0,743ms fill: 37,29ms get Ordered: 16,391ms get Random Order: 86,846ms --- Flattened allocate: 0,073ms fill: 12,771ms get Ordered: 13,568ms get Random Order: 12,551ms --- Jagged allocate: 10,595ms fill: 10,976ms get Ordered: 12,797ms get Random Order: 56,314ms array size: 512 * 128 * 512 = 33554432 --- Multidimensional allocate: 7,78ms fill: 258,828ms get Ordered: 133,145ms get Random Order: 791,616ms --- Flattened allocate: 0,283ms fill: 55,868ms get Ordered: 64,609ms get Random Order: 64,498ms --- Jagged allocate: 175,661ms fill: 86,344ms get Ordered: 95,213ms get Random Order: 741,485ms |
Ответ: Великая битва 4х языков программирования на простейшей задачке
Вот ещё потестил, и вывел в виде % кто превосходит или уступает multidimensional массиву, отфильтровав (сверху самые быстрые).
Код:
array size: 256 * 64 * 256 = 4194304 Код:
array size: 512 * 128 * 512 = 33554432 |
Ответ: Великая битва 4х языков программирования на простейшей задачке
вот еще один бенчмарк в копилку. язык F# (для .NET)
постарался товарищ boxxyfag Код:
open System Microsoft (R) F# 2.0 Interactive build 4.0.40219.1 Windows 7 Pro 32 Amd turion rm-74 2,20 GHz Allocation time: 00:00:00.0040002 Total loop time: 00:00:21.1218322 Average loop time: 00:00:01.0560916 |
Ответ: Великая битва 4х языков программирования на простейшей задачке
код на F# с аллокацией и одновременной инициализацией массива:
Код:
open System Allocation and init time: 00:00:13.5615343 |
Ответ: Великая битва 4х языков программирования на простейшей задачке
код на фортране, который должен по идее был всех победить, но у аффтара с рекордом не вышло ;)
автор: zxc Код:
integer before(3), after(3), I, J, K, N Celeron(R) Dual-Core CPU T3500 @ 2.10GHz Loop Time: 0.0000000 31.000000 AVG: 1.5500000 |
Часовой пояс GMT +4, время: 02:48. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot