Clamp
Lost in space
offline
Опыт:
71,258Активность: |
ScorpioT1000, занимайся ты таким извратом в проекте вместо полезной работы, сидел бы без работы <3 |
22.01.2014, 20:53 | #21
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Clamp, у меня такая работа - отнимать проекты у таких как ты и за доплату делать что-то быстрое и юзабельное ;)
ScorpioT1000 добавил:
Mihahail, я точно не знаю, может это не та коллекция в плюсах есть std::map это сортированное дерево, если туда всунуть в <double, int> элемент например дерево 123=0, 456=1, 789=2, а я всуну 200, можно с легкостью найти предыдущий 123=0 причем оно будет сделано в 1-2 операции (а при 10000 элементах в 7-15 операций) когда перебор будет в худшем случае 10000 вызовов с хешмапом еще быстрей, но у хешмапа может не быть методов взять след/пред элемент |
22.01.2014, 20:57 | #22
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
ScorpioT1000, а сортирует его святой дух чтоли? По ходу дела это обыкновенный класс, у которого внутри функция сортировки, которая так же циклом перебирает себя. |
22.01.2014, 21:01 | #23
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Hanabishi, см мой последний пост) если там дерево вместо листа или выборка идет по типу "подели на два и сравни", то оно работает быстро |
22.01.2014, 21:05 | #24
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
ScorpioT1000, неа. Пишут, что этот ОЧЕНЬ медленный.
((цитата
SortedList<TKey, TValue> is simply an array that grows over the time.
Every time you insert an element, it first check if the array has enough capacity, if not, a bigger array is recreated and old elements are copied into it (like List<T>)
After that, it searches where to insert the element, using a binary search (this is possible since the array is indexable and already sorted).
To keep the array sorted, it moves (or pushes) all the elements situated after position of element to be inserted by one position (using Array.Copy()).
That explains why performance of SortedList is so bad when you insert unsorted elements. It has to re-copy some elements almost every insertion. The only case it has not to be done is when the element has to be inserted at the end of the array.
)) Но есть класс получше, а именно SortedDictionary<TKey, TValue>
((цитата
SortedDictionary<TKey, TValue> is different and use a binary tree to insert and retrieve elements. It also has some cost at insert because sometimes the tree need to be re-balanced (but not every insertion).
Performance is quite similar while searching an element with SortedList or SortedDictionary because they both use a binary search. )) |
22.01.2014, 21:14 | #25
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
ну вот, оно какраз =) |
22.01.2014, 21:17 | #26
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Clamp
Lost in space
offline
Опыт:
71,258Активность: |
ScorpioT1000:
я дизайнер, удачи напилить нечто "более быстрое и юзабельное" на этом поприще) программист на фулставке должен пилить код быстро, излишняя оптимизация вредна, и ты это знаешь) |
22.01.2014, 21:17 | #27
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
я в таких случаях описываю функцией или двумя функциями.
если уровень 500 опыта то достаточно опыт делить на 500 чтобы его получить, тут всё просто и не надо вообще никаких явных проверок делать.
если первые уровни идут иначе, вводим вторую функцию, которая в зависимости от ввода уменьшит или увеличит вывод
result = XP \ 500
result = result + correctionStage1(XP) correctionStage1 вычтет из опыта 2000 и поделит на 350, результат прибавит к тому что есть, соответственно если опыт менее 2000 то уровень уменьшится, а если более 2000 увеличится, таким образом можно менять вывод функции с определённых границ до определённых границ, ведь кроме деления и умножения есть битмаск и другие хитрые операторы.
Я вообще очень люблю использовать оператор % или ^ (ява), они позволяют задавать относительно сложные последовательности простой и понятной строкой кода. чем сложнее график тем больше будет кривых корректировки (так называемых октав), но не важно как сложен график, всё равно его можно построить.
если график описывается элементарными функциями, то всё существенно проще, если у вас эллиптические кривые то всё печально. |
22.01.2014, 21:36 | #28
+3/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mihahail
๏̯͡๏
offline
Опыт:
17,766Активность: |
А как же полиномы, интерполяция и округление? Объясните плз, почему это плохая идея тут. Ведь под это дело составить полином не сложно, если уровней не очень много. Иначе же просто подбирать функцию как сделал диод. |
22.01.2014, 23:34 | #29
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
Clamp:
ошибаешься.... Надо пилить быстро, качественно, без багов и так что бы потом Архитекторам не пришлось приходить и пинать тебя. Вредна ранняя оптимизация кода |
26.01.2014, 14:02 | #30
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Просто ради информации - "поздней" оптимизации на практике не бывает. Бывает всего 2 вещи:
|
26.01.2014, 23:55 | #31
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,880Активность: |
Ну, обычно есть 3 вида кода:
Примечание: разумеется, иногда требуется и самый оптимальный вариант. |
27.01.2014, 03:18 | #32
+3/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Olorin
offline
Опыт:
11,841Активность: |
switch уже предлагали? |
07.02.2014, 15:52 | #33
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Clamp
Lost in space
offline
Опыт:
71,258Активность: |
Hellfim, про то, что скорп пилит третий вариант, я и говорю. |
07.02.2014, 16:50 | #34
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
|
07.02.2014, 17:01 | #35
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Olorin
offline
Опыт:
11,841Активность: |
ScorpioT1000, чёрт, да, там в кейсе нельзя сравнения |
07.02.2014, 17:12 | #36
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|