Страница: 1 | 2 | 3 | 4 | 5 |
Вопрос: Выношу на суд.
Добавлено: 01.03.09 09:40
Автор вопроса: Smith | Web-сайт:
Ответы
Всего ответов: 61
Номер ответа: 46
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #46
Добавлено: 03.03.09 08:34
ЕRОS
Первый поиск 9 сек.
Повторный 5 сек.
Грубо на обращения к винту 4 сек. И 5 сек. это все остальное.
Winаnd
Первый поиск 1 мин.
Повторный 1 сек.
Тож самое, на винт 59 и 1 сек. алгоритм.
Я правильно понял?
Номер ответа: 47
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #47
Добавлено: 03.03.09 18:33
Smith, а не затестить ли тебе обе реализации у себя?)
Номер ответа: 48
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #48
Добавлено: 03.03.09 22:05
Давайте перепишу на ассемблере? Думаю разница будет минимальной из-за ограничения железок. Проверим?
Номер ответа: 49
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #49
Добавлено: 03.03.09 22:13
Первый поиск 1 мин.
Повторный 1 сек.
Тож самое, на винт 59 и 1 сек. алгоритм
Я правильно понял?
нет, не правильно.. мы не можем вычленить время ожидания данных с винта и время работы алгоритма
согласен, Brand был прав: выше головы не прыгнешь.. в данном случае мы уперлись в железо.
Номер ответа: 50
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #50
Добавлено: 04.03.09 11:58
Братишка по незнанию пытается разложить результат )
За комп я попаду только через неделю, тогда и попробую.
Номер ответа: 51
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #51
Добавлено: 04.03.09 16:21
Да нет никакого "времени работы алгоритма". Оно, можно сказать, равно нулю.
Номер ответа: 52
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #52
Добавлено: 04.03.09 17:44
Формулировка может и не та, но операции повторяющиеся 54000 раз обычно занимают некоторое время и чем правильнее код, тем меньше нужно времени.
Номер ответа: 53
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #53
Добавлено: 04.03.09 18:11
Сделай цикл на 54000 итераций и посмотри сколько он будет выполняться.
А после этого сделай в 1000 раз больше и еще раз посмотри.
Номер ответа: 54
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #54
Добавлено: 04.03.09 18:34
это время будет ничтожно мало по сравнению со временем ожидания данных с винта..
Номер ответа: 55
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #55
Добавлено: 04.03.09 18:58
Вrаnd не мути, ты прекрасно понимаешь, что алгоритм который мы обсуждаем намного сложнее банального цикла.
Номер ответа: 56
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #56
Добавлено: 04.03.09 20:01
Smith, мутишь тут как раз ты!
С вариантом, который привел EROS, у меня на самом деле намного больше общего чем кажется на первый взгляд. И по моему мнению код который там приведен, достаточно оптимален для того, чтоб не было никакого смысла пытаться там что-то еще оптимизировать.
Повторный 5 сек.
Грубо на обращения к винту 4 сек. И 5 сек. это все остальное.
Ты хочешь сказать что на операции, не связанные и диском, тратится больше времени чем на работу с диском? Вывод совершенно неверный. Тот факт что работает системное кеширование совсем не означает что с диском не выполняется никаких операций.
Нужно ж в конце концов хотя бы примрено понимать архитектуру компьютера и знать что сколько времени занимает (хотя бы в приближении нисколько/дофига).
Изначальный твой вариант работал долго не потому что был написан на VB6 с "тормознутым FSO", а потому что ту делал кучу лишних операций с диском. Тебе показали как от них избавиться, на чем бы ты теперь не писал, хоть на vbscript, разницы будет ровно 0, ровно столько что ты ее не заметишь. А ты почему-то не хочешь этого понять и опять ерунду говоришь...
Для дальнейших размышлений привожу небольшую информацию (время в секундах в рассчете на единицу действия, с учетом времени работы цикла).
Исходя из этих данных, просто подумай, какой должен быть алгоритм, чтоб на 54000 папках время его работы (без учета обращения к диску) было хоть сколько-нибудь сравнимым с цифрой 0.15 секунд.
Номер ответа: 57
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #57
Добавлено: 04.03.09 20:44
0.15, это только получение списка папок! а ты еще получаешь размер папки, что вызовет рекурсивное получение всех нижележащих папок и файлов + получение размера для каждой из них.. при чем не по 1 разу!!!
Steel Brand не поленился и провел эти измерения, чтоб ты понял, что в твоем случае винт - это самое слабое место! И оптимизация алгоритма должна быть направлена на уменьшение числа обращений к винту.. только так ты сможешь получить более менее приемлемый результат. Именно это я и реализовал в своем алгоритме, я объеденил 2 операции, чтоб меньше дергать винт.
Никто не спорит, сам алгоритм тоже немаловажен и он тоже занимает определенное время, но в твоем случае время на его работу ничтожно мало..
Номер ответа: 58
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #58
Добавлено: 04.03.09 22:31
И по моему мнению код который там приведен, достаточно оптимален для того, чтоб не было никакого смысла пытаться там что-то еще оптимизировать.
Brand успокойся, я при всем желании не смогу там ничего оптимизировать )
Ты хочешь сказать что на операции, не связанные и диском, тратится больше времени чем на работу с диском? Вывод совершенно неверный.
Да ничего я не хочу сказать, ненадо придумывать за меня что я хочу сказать.
EROS ещё в 49 посте все объяснил раньше тебя, читай внимательней.
Номер ответа: 59
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #59
Добавлено: 04.03.09 22:43
И ещё в 45 уточнил, что результаты нельзя сравнивать.
Я и не пытался их сравнивать или оценивать, а как уже упоминалось ПО НЕЗНАНИЮ думал както определить сколько и на что в каждом отдельном случае ушло времени.
Это глупость, не спорю
Номер ответа: 60
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #60
Добавлено: 04.03.09 23:16
Интересная у тебя манера, цитировать только то, что тебе удобно, вообще-то мой пост 46 был вопросом а не ответом )
Я достаточно понимаю в архитектуре компа, чтоб знать сколько и на что уходит времени именно в указанном тобой приближении.
Изначальный твой вариант работал долго не потому что был написан на VB6 с "тормознутым FSO", а потому что ту делал кучу лишних операций с диском.
Изначально мой вариант работал долго именно потому, что был написан на VB6 с тормознутым FSO делающим кучу лишних операций с диском.
Тебе показали как от них избавиться
Ещё раз большое спасибо за это, я даже понял идею сканирования дерева снизу вверх, основная проблема в винте и наверное так будет быстрее.
Но оставлять папки потому, что в них есть пустые файлы я извините не намерен.
на чем бы ты теперь не писал, хоть на vbscript, разницы будет ровно 0, ровно столько что ты ее не заметишь. А ты почему-то не хочешь этого понять и опять ерунду говоришь...
Ну извини Brand, я не хотел тебя расстроить своей ерундой )