Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 | 5 |

 

  Вопрос: Выношу на суд. Добавлено: 01.03.09 09:40  

Автор вопроса:  Smith | Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой. | ICQ: ненавижу 

Ответить

  Ответы Всего ответов: 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-сайт: winandfx.narod.ru
 Профиль | | #47
Добавлено: 03.03.09 18:33
Smith, а не затестить ли тебе обе реализации у себя?)

Ответить

Номер ответа: 48
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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
но операции повторяющиеся 54000 раз обычно занимают некоторое время и чем правильнее код, тем меньше нужно времени

это время будет ничтожно мало по сравнению со временем ожидания данных с винта..

Ответить

Номер ответа: 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, у меня на самом деле намного больше общего чем кажется на первый взгляд. И по моему мнению код который там приведен, достаточно оптимален для того, чтоб не было никакого смысла пытаться там что-то еще оптимизировать.

Первый поиск 9 сек.
Повторный 5 сек.
Грубо на обращения к винту 4 сек. И 5 сек. это все остальное.

Ты хочешь сказать что на операции, не связанные и диском, тратится больше времени чем на работу с диском? Вывод совершенно неверный. Тот факт что работает системное кеширование совсем не означает что с диском не выполняется никаких операций.

Нужно ж в конце концов хотя бы примрено понимать архитектуру компьютера и знать что сколько времени занимает (хотя бы в приближении нисколько/дофига).

Изначальный твой вариант работал долго не потому что был написан на VB6 с "тормознутым FSO", а потому что ту делал кучу лишних операций с диском. Тебе показали как от них избавиться, на чем бы ты теперь не писал, хоть на vbscript, разницы будет ровно 0, ровно столько что ты ее не заметишь. А ты почему-то не хочешь этого понять и опять ерунду говоришь...

Для дальнейших размышлений привожу небольшую информацию (время в секундах в рассчете на единицу действия, с учетом времени работы цикла).

  1.  
  2. Вызов пустого метода                0.00000000079
  3. Вызов пустого метода (без инлайна)  0.0000000024
  4. Вызов пустого метода (виртуальный)  0.0000000041
  5. Создание нового объекта             0.0000000047
  6. List(Of Int32).Add                  0.000000019
  7. List(Of String).Add                 0.000000078
  8. StringBuilder.Append                0.00000011
  9. Int32.ToString                      0.00000013
  10. MD5Cng.ComputeHash (данные 1 кб)    0.000011
  11. Directory.GetDirectories            0.15
  12. Directory.GetDirectories (повторный)0.0055
  13.  
  14. PS Intel Core 2 Duo E6750, 2 GB RAM, Windows Server 2008 R2 x64 Beta, Visual Studio 2008
  15. Для листинга использовалась дирректория \Windows\System32\ (89 папок, 2340 файлов), диск перед этим дефрагментировался



Исходя из этих данных, просто подумай, какой должен быть алгоритм, чтоб на 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
Steel Brand пишет:
И по моему мнению код который там приведен, достаточно оптимален для того, чтоб не было никакого смысла пытаться там что-то еще оптимизировать.

Brand успокойся, я при всем желании не смогу там ничего оптимизировать )

Steel 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 был вопросом а не ответом )

Я достаточно понимаю в архитектуре компа, чтоб знать сколько и на что уходит времени именно в указанном тобой приближении.
Steel Brand пишет:
Изначальный твой вариант работал долго не потому что был написан на VB6 с "тормознутым FSO", а потому что ту делал кучу лишних операций с диском.

Изначально мой вариант работал долго именно потому, что был написан на VB6 с тормознутым FSO делающим кучу лишних операций с диском.
Steel Brand пишет:
Тебе показали как от них избавиться

Ещё раз большое спасибо за это, я даже понял идею сканирования дерева снизу вверх, основная проблема в винте и наверное так будет быстрее.
Но оставлять папки потому, что в них есть пустые файлы я извините не намерен.
Steel Brand пишет:
на чем бы ты теперь не писал, хоть на vbscript, разницы будет ровно 0, ровно столько что ты ее не заметишь. А ты почему-то не хочешь этого понять и опять ерунду говоришь...

Ну извини Brand, я не хотел тебя расстроить своей ерундой )

Ответить

Страница: 1 | 2 | 3 | 4 | 5 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам