Страница: 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
 Alex 







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







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





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







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #4
       
Добавлено:  04.03.11 14:07
       
    
       
  
 
    
Попробуй запусить ДЛЛ-ку пару раз на 2-й и 3-й машине, а не один раз, скорее-всего при первом запуске идет "компиляция под текущую машину"  
1) JIT компиляция длиной в минуту?
2) JIT компиляция выполняется не при первом запуске, а при каждом.
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: Artyom
 Artyom







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



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




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



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





Вопросов: 21
Ответов: 41
      
 Профиль |  | #10
       
Добавлено:  04.03.11 22:24
       
    
       
  
 
    
Очень похоже на правду  
Везде от имени администратора.
Спасибо за подсказку, буду искать второй i7, чтобы проверить.
		
	  
			 
	
		 
    
       
    
Номер ответа: 11 
      
Автор ответа: Morpheus
 Morpheus




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





Вопросов: 21
Ответов: 41
      
 Профиль |  | #12
       
Добавлено:  05.03.11 09:46
       
    
       
  
 
    
Нет не легче, ибо двухмерных массивов у меня нет, а есть одномерные вложенные. Неэффективное использование памяти очень вероятно, но способов изменить структуру массивов я пока не вижу.
		
	  
			 
	
		 
    
       
    
Номер ответа: 13 
      
Автор ответа: AgentFire
 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 ))))). Если ты, конечно, не игрушку пишешь.