«Дынамічнае захоўванне» з тетсру

Я працую з бібліятэкай, якая выкарыстоўвае «тетср» мадэляваць дынамічную структуру дадзеных для захоўвання з прамым доступам. Важна адзначыць, што я працую на лікавых аперацыях, у выніку якіх з невялікімі наборамі дадзеных. Як я магу вызначыць, калі звязаны спіс быў бы больш прыдатным, чым тетсру з пункту гледжання эфектыўнасці?

З таго, што я знайшоў у літаратуры і ў Інтэрнэце, тэсты лічацца даволі зло.

Я маю справу з каля 30 элементаў (ад вопыту) невялікага памеру (вектары 3 кампанента: кропкі ў прасторы).

Што б вы выкарыстоўваць у гэтым выпадку:

1) тетср + прамы доступ 2) звязаны спіс + лінейны пошук у рэальным часе

Дзякуй!

1
Калі ласка, пакажыце нам «літаратуру», якая кажа, што тэсты з'яўляюцца злом.
дададзена аўтар John Dibling, крыніца
Арыенціры «лічыцца злом»? Што Frak?
дададзена аўтар Lightness Races in Orbit, крыніца
Ну, коды, якія я ў праграмаванні (я Mech. Eng.) Пагадненне з вынікамі колькаснага мадэлявання ў механіцы суцэльны асяроддзя з выкарыстаннем метаду канчатковых аб'ёмаў. Вылічэнні вельмі складаныя, і яны працуюць на кластарах HPC. Што я меў на ўвазе «тэсты ліхія" быў пастаўлены няправільна: я меў на ўвазе, што няма ніякага сэнсу ў бенчмаркетынгу гэта справа цяпер, пакуль гэта не ўсе закадаваныя. Ёсць пласты і пласты, каб пабудаваць, і я не магу ведаць, на дадзены момант, які варыянт лепш. Я мяркую, што я меў на ўвазе «заўчаснай аптымізацыі», але зноў жа, я Мех. Eng., Так што даруйце за няправільную тэрміналогію ...
дададзена аўтар tmaric, крыніца
Прафіляванне! гэта адзіны спосаб.
дададзена аўтар Alok Save, крыніца

4 адказы

Калі вы сапраўды клапаціцца, што многае пра прадукцыйнасці, вы павінны вымераць яго, то ёсць тэст код (гэта не зло, гэта звычайная практыка, што такое зло з'яўляецца заўчаснай аптымізацыяй ).

But be aware that, at least with recent GCC (e.g. GCC 4.6) on GNU/Linux and when optimized by at least -O2, memcpy & memset are semi-magically (thru __builtin_memcpy or similar tricks) transformed to quite efficient code.

А для вялікага мноства дробных элементаў дадзеных, я б выказаў здагадку, што разгляд кэшавання з'яўляецца дамінуючымі w.r.t. прадукцыйнасць.

3
дададзена
Што менавіта гэта азначае «разгляд кэшавання з'яўляецца дамінуючай прадукцыйнасцю w.r.t.»? Я маю справу з вялікім наборам дробных элементаў дадзеных, і ў рэшце рэшт, я буду тэставаць розныя варыянты кантэйнера, як Вы прапанавалі. Дзякуючы.
дададзена аўтар tmaric, крыніца

Прафіляванне або тэсты, з'яўляюцца <моцны> не зло. Яны з'яўляюцца лепшым спосабам, каб высветліць, якія з дадатковых параметраў з'яўляецца больш эфектыўным. З «падцягнутасць» з optmizers сёньня, лічыльнік-інтуітыўны варыянт можа фактычна апынуцца найбольш эфектыўным. Я прапаную вам правесці тэсты і выбраць на яго аснове. Толькі так вы можаце пайсці не так, не забяспечвае правільны ўваход, які пакрывае большасць выпадкаў.

1
дададзена

Як Вы справу з такім невялікім колькасцю дадзеных - чаму ты турбуешся?

Бенчмаркетынгу толькі сапраўды працуе з вялікай колькасцю вылічэнняў - абмежаваць іншыя эфекты ад аперацыйнай сістэмы.

1
дададзена

Пры гэтак малым наборы дадзеных (30 * 12 байт), усе вашыя дадзеныя ўнутры радка кэша. Так I4m упэўнены, што гэта будзе хутчэй, чым спіс. Калі вы карыстаецеся спіс, вам усё роўна неабходна вылучыць частка памяці, якая, у большасці АС займае больш часу, чым капіраванне такі невялікі кавалачак памяці.

0
дададзена