Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Время выполнения кода Добавлено: 04.03.11 13:35  

Автор вопроса:  ЛеШий
Добрый день!

Столкнулся со следующей проблемой: на ноутбуке (VS2010Pro VB) написал DLL для сбора информации из сторонней программы. На моем ноуте этот процесс выполняется около одной секунды. Переношу эту DLL на другой компьютер и запускаю - время выполнения того же кода более минуты, т.е. в 60 раз медленнее. Проверил на третьей машине - опять около минуты.

Машина 1 (время выполнения 1-3 сек.)
Win7 x64
Intel i7
4 Gb RAM

Машина 2 (время выполнения около 1 мин.)
Vista x64
Intel core 2 Duo
4 Gb Ram

Машина 3 (время выполнения около 1 мин.)
Win7 x64
Intel i5
8 Gb RAM

Программа, из которой высасывал данные, везде одинаковая (x64).

В чем может быть проблема? Из-за чего такая большая разница?

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Alex



Вопросов: 7
Ответов: 73
 Профиль | | #1 Добавлено: 04.03.11 13:45
Попробуй запусить ДЛЛ-ку пару раз на 2-й и 3-й машине, а не один раз, скорее-всего при первом запуске идет "компиляция под текущую машину"

Ответить

Номер ответа: 2
Автор ответа:
 Alex



Вопросов: 7
Ответов: 73
 Профиль | | #2 Добавлено: 04.03.11 13:47
Короче последующие разы ДЛЛ-ка должна быстрее отрабатывать

Ответить

Номер ответа: 3
Автор ответа:
 ЛеШий



Вопросов: 21
Ответов: 41
 Профиль | | #3 Добавлено: 04.03.11 14:00
DLL запускалась несколько раз на каждой машине. Если последующие разы и были быстрее, то не заметно.

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 04.03.11 14:07
Alex пишет:
Попробуй запусить ДЛЛ-ку пару раз на 2-й и 3-й машине, а не один раз, скорее-всего при первом запуске идет "компиляция под текущую машину"

1) JIT компиляция длиной в минуту?
2) JIT компиляция выполняется не при первом запуске, а при каждом.

Ответить

Номер ответа: 5
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 04.03.11 14:09
Я так понимаю открылся 5-й сезон битвы экстрасенсов? Найти причину тормозов, зная только время выполнения программы в разных условиях, и названия процессоров (причем без указания моделей)?

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 04.03.11 14:15
Я тогда рискну.
1) Идет обработка 2-х мерных массивов в неправильном порядке (перепутаны местами внешний и внутренний циклы, из-за чего очень неэффективно используется кеш-память. Поскольку в Core i7 12 мб кеш-памяти, в созданых условиях кеш-промахи происходят очень редко или даже вообще не происходят, в Core i5 и Core 2 Duo кеш-памяти в разы меньше, поэтому кеш не работает, в результате имеем катастрофическое падение производительности (хотя, возможно, не в 60 раз...)
2) При запуске не на dev машине запуск выполняется не из-под администратора, в результате постоянно падают какие-то SecurityException'ы, которые гасятся пустым блоком catch и их не видно, но на это тратится много времени.

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 04.03.11 15:16
неплохой удар

Ответить

Номер ответа: 8
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #8
Добавлено: 04.03.11 16:43
Ога, мне б так уметь (серьёзно).

Ответить

Номер ответа: 9
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 04.03.11 21:17
подымай свой джедайский скилл

Ответить

Номер ответа: 10
Автор ответа:
 ЛеШий



Вопросов: 21
Ответов: 41
 Профиль | | #10 Добавлено: 04.03.11 22:24
1) Идет обработка 2-х мерных массивов в неправильном порядке (перепутаны местами внешний и внутренний циклы, из-за чего очень неэффективно используется кеш-память. Поскольку в Core i7 12 мб кеш-памяти, в созданых условиях кеш-промахи происходят очень редко или даже вообще не происходят, в Core i5 и Core 2 Duo кеш-памяти в разы меньше, поэтому кеш не работает, в результате имеем катастрофическое падение производительности (хотя, возможно, не в 60 раз...)

Очень похоже на правду :)

2) При запуске не на dev машине запуск выполняется не из-под администратора, в результате постоянно падают какие-то SecurityException'ы, которые гасятся пустым блоком catch и их не видно, но на это тратится много времени.

Везде от имени администратора.

Спасибо за подсказку, буду искать второй i7, чтобы проверить.

Ответить

Номер ответа: 11
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #11
Добавлено: 05.03.11 00:01
.oO(не легче циклы местами поменять?)

Ответить

Номер ответа: 12
Автор ответа:
 ЛеШий



Вопросов: 21
Ответов: 41
 Профиль | | #12 Добавлено: 05.03.11 09:46
не легче циклы местами поменять?

Нет не легче, ибо двухмерных массивов у меня нет, а есть одномерные вложенные. Неэффективное использование памяти очень вероятно, но способов изменить структуру массивов я пока не вижу.

Ответить

Номер ответа: 13
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #13 Добавлено: 05.03.11 09:55
а ты покажи, мож другие то и улгядят

Ответить

Номер ответа: 14
Автор ответа:
 ЛеШий



Вопросов: 21
Ответов: 41
 Профиль | | #14 Добавлено: 09.03.11 22:01
Эти циклы у меня занимают больше 200 строк и несколько классов. Ну и немного коммерческая тайна :)
Буду колдовать, если выясню причину - напишу.

Ответить

Номер ответа: 15
Автор ответа:
 СанСаныч



Вопросов: 3
Ответов: 118
 Профиль | | #15 Добавлено: 10.03.11 13:32
ЛеШий пишет:
Эти циклы у меня занимают больше 200 строк и несколько классов

Круто. Более чем уверен, что это чудо можно сократить раз в 5 ))))). Если ты, конечно, не игрушку пишешь.

Ответить

Страница: 1 | 2 |

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



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