История изменений
Исправление lbvf50txt, (текущая версия) :
Только сейчас я понял, что вы не знаете значение слова «оптимизация». Оптимизировать код можно на любом языке, изменяя алгоритм программы. Например можно уменьшить скорость выполнения программы, увеличив потребляемую память и усложнив алгоритм. При замене линейного поиска элемента в массиве за O(N), можно создать древовидную структуру, что усложнит программу и потребует больше времени на отладку, те же данные будут требовать больше памяти для хранения, но поиск будет производиться за O(LogN).
Т.е. если условно у вас просмотр элемента занимает 1мс, при O(N) увеличение элементов будет увеличивать время. 1 - 1мс, 100 - 100мс, 1000 - 1 cек, 10 000 - 10 сек, 100_000 - 100cек (1.5мин).
А если у вас алгоритм поиска O(LogN) то время работ программ будет расти не так быстро: 1 - 1мс, 100 - 7мс, 1000 - 10мс, 10_000 - 13мс, 100_000 - 17мс.
Это оптимизация которая не зависит ни от GC, ни от языка, а от алгоритма. 3 курс Вуза, курс лекций «Алгоритмы и Структуры Данных». При 100_000 элементов разница в выполнении в времени выполнения в 5000 раз - в зависимости от алгоритма.
P.S.
Даже если учесть, что на просмотр одного элемента в дереве тратиться в 10 раз больше времени. То 100_000 элементов будут просмотрены за 170мс ~= 0.2секунды, что в 500 раз быстрей чем линейны поиск с 1мс на элемент. O(N) - линейная сложность, O(LogN) - логарифмическая сложность алгоритма.
Исправление lbvf50txt, :
Только сейчас я понял, что вы не понимаете значение слова «оптимизация». Оптимизировать код можно на любом языке, изменяя алгоритм программы. Например можно уменьшить скорость выполнения программы, увеличив потребляемую память и усложнив алгоритм. При замене линейного поиска элемента в массиве за O(N), можно создать древовидную структуру, что усложнит программу и потребует больше времени на отладку, те же данные будут требовать больше памяти для хранения, но поиск будет производиться за O(LogN).
Т.е. если условно у вас просмотр элемента занимает 1мс, при O(N) увеличение элементов будет увеличивать время. 1 - 1мс, 100 - 100мс, 1000 - 1 cек, 10 000 - 10 сек, 100_000 - 100cек (1.5мин).
А если у вас алгоритм поиска O(LogN) то время работ программ будет расти не так быстро: 1 - 1мс, 100 - 7мс, 1000 - 10мс, 10_000 - 13мс, 100_000 - 17мс.
Это оптимизация которая не зависит ни от GC, ни от языка, а от алгоритма. 3 курс Вуза, курс лекций «Алгоритмы и Структуры Данных». При 100_000 элементов разница в выполнении в времени выполнения в 5000 раз - в зависимости от алгоритма.
P.S.
Даже если учесть, что на просмотр одного элемента в дереве тратиться в 10 раз больше времени. То 100_000 элементов будут просмотрены за 170мс ~= 0.2секунды, что в 500 раз быстрей чем линейны поиск с 1мс на элемент. O(N) - линейная сложность, O(LogN) - логарифмическая сложность алгоритма.
Исправление lbvf50txt, :
Только сейчас я понял, что вы не понимаете значение слова «оптимизация». Оптимизировать код можно на любом языке, изменяя алгоритм программы. Например можно уменьшить скорость выполнения программы, увеличив потребляемую память и усложнив алгоритм. При замене линейного поиска элемента в массиве за O(N), можно создать древовидную структуру, что усложнит программу и потребует больше времени на отладку, те же данные будут требовать больше памяти для хранения, но поиск будет производиться за O(LogN).
Т.е. если условно у вас просмотр элемента занимает 1мс, при O(N) увеличение элементов будет увеличивать время. 1-1мс, 100-100мс, 1000 - 1 cек, 10 000 - 10 сек, 100_000 - 100cек (1.5мин).
А если у вас алгоритм поиска O(LogN) то время работ программ будет расти не так быстро: 1-1мс, 100 - 7мс, 1000 - 10мс, 10_000-13мс, 100_000 - 17мс.
Это оптимизация которая не зависит ни от GC, ни от языка, а от алгоритма. 3 курс Вуза, курс лекций «Алгоритмы и Структуры Данных». При 100_000 элементов разница в выполнении в времени выполнения в 5000 раз - в зависимости от алгоритма.
P.S.
Даже если учесть, что на просмотр одного элемента в дереве тратиться в 10 раз больше времени. То 100_000 элементов будут просмотрены за 170мс ~= 0.2секунды, что в 500 раз быстрей чем линейны поиск с 1мс на элемент.
Исправление lbvf50txt, :
Только сейчас я понял, что вы не понимаете значение слова «оптимизация». Оптимизировать код можно на любом языке, изменяя алгоритм программы. Например можно уменьшить скорость выполнения программы, увеличив потребляемую память и усложнив алгоритм. При замене линейного поиска элемента в массиве за O(N), можно создать древовидную структуру, что усложнит программу и потребует больше времени, но поиск будет производиться на O(LogN).
Т.е. если условно у вас просмотр элемента занимает 1мс, при O(N) увеличение элементов будет увеличивать время. 1-1мс, 100-100мс, 1000 - 1 cек, 10 000 - 10 сек, 100_000 - 100cек (1.5мин).
А если у вас алгоритм поиска O(LogN) то время работ программ будет расти не так быстро: 1-1мс, 100 - 7мс, 1000 - 10мс, 10_000-13мс, 100_000 - 17мс.
Это оптимизация которая не зависит ни от GC, ни от языка, а от алгоритма. 3 курс Вуза. При 100_000 элементов разница в выполнении в времени выполнения в 5000 раз - в зависимости от алгоритма.
Исходная версия lbvf50txt, :
Только сейчас я понял, что вы не понимаете значение слова «оптимизация». Оптимизировать код можно на любом языке, изменяя алгоритм программы. Например можно уменьшить скорость выполнения программы, увеличив потребляемую память и усложнив алгоритм. При замене линейного поиска элемента в массиве за O(N), можно создать древовидную структуру, что усложнит программу и потребует больше времени, но поиск будет производиться на O(LogN).
Т.е. если условно у вас просмотр элемента занимает 1мс, при O(N) увеличение элементов будет увеличивать время. 1-1мс, 100-100мс, 1000 - 1 cек, 10 000 - 10 сек, 100_000 - 100cек (1.5мин).
А если у вас алгоритм поиска O(LogN) то время работ программ будет расти не так быстро: 1-1мс, 100 - 7мс, 1000 - 10мс, 10_000-13мс, 100_000 - 17мс.
Это оптимизация которая не зависит ни от GC, ни от языка, а от алгоритма. 3 курс Вуза. При 100_000 элементов разница в выполнении в времени выполнения в 10_000 раз - в зависимости от алгоритма.