Что нового

Скрипт измерения скорости

ArgoNaft

Новичок
Сообщения
129
Репутация
0
Код:
Func Get_Speed_Internet($country)
   
   If ($country == 'US') Then
	  ;Тест урлы США
	  Local $aUrl_test[3] = ['http://node06.raidlogic.net/speedtest/10mb.bin','http://mirror.us.leaseweb.net/speedtest/10mb.bin','http://testmeplease-us.s3.amazonaws.com/10mb.bin']
   Else
	  ;Тест урлы Европы
	  Local $aUrl_test[5] = ['http://speedtest.tweak.nl/10mb.bin','http://mirror.de.leaseweb.net/speedtest/10mb.bin','http://speedtest.onsbrabantnet.nl/files/10mb.bin','http://mirror.global-layer.com/speedtest/10mb.bin']	  
   EndIf
   
   ;Если урл не доступен будет перебирать пока не надйте рабочий рандомно из списка
   Do
	  $rand_num = Random(0,UBound($aUrl_test)-1,1)
	  $url_test_speed = $aUrl_test[$rand_num]
	  ;ConsoleWrite($url_test_speed & @CRLF)
   Until InetGetSize($url_test_speed,1) > 0
   
   $nSize = InetGetSize($url_test_speed) ;получаем размер файла для теста
   $nSize = Ceiling($nSize/1000000) ;переводим размер байт в мегабайты и округляем
   $hTimer = TimerInit() ; Запускает таймер и хранит дескриптор в переменной
   InetGet($url_test_speed, @TempDir&"\10mb.bin")
   ;ConsoleWrite(@TempDir&"\10mb.bin" & @CRLF)   
   $iDiff = TimerDiff($hTimer) ; Возвращает разницу во времени, от предыдущего запуска TimerInit, дескриптор которого указан в переменной
   $iDiff= Ceiling($iDiff/1000) ;переводим в секунды и округляем
   $speed_internet = Ceiling($nSize*1.25*10/$iDiff) ;вычисляем скорость интрнета
   ;ConsoleWrite("~"&$speed_internet&" Mb" & @CRLF)
   FileDelete(@TempDir&"\10mb.bin")
   If IsNumber($speed_internet) Then
	  Return $speed_internet
   Else
	  Return 0
   EndIf
EndFunc


Написал такую фот простенькую функцию, и она нормально не измеряет скорость, потому что надо как то многопоточно качать ... подскажите как лучше мерить скорость?
http://autoit-script.ru/index.php?topic=11447.0 тут смотрел так и не понял как получить из приведенного ниже класса скорость
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Код:
MsgBox(0,'',Get_Speed_Internet('us'))
Func Get_Speed_Internet($country)
   If ($country == 'US') Then
      Local $aUrl_test[3] = ['http://node06.raidlogic.net/speedtest/10mb.bin','http://mirror.us.leaseweb.net/speedtest/10mb.bin','http://testmeplease-us.s3.amazonaws.com/10mb.bin']
   Else
      Local $aUrl_test[5] = ['http://speedtest.tweak.nl/10mb.bin','http://mirror.de.leaseweb.net/speedtest/10mb.bin','http://speedtest.onsbrabantnet.nl/files/10mb.bin','http://mirror.global-layer.com/speedtest/10mb.bin']
   EndIf
   ;Если урл не доступен будет перебирать пока не надйте рабочий рандомно из списка
   Do
      $rand_num = Random(0,UBound($aUrl_test)-1,1)
      $url_test_speed = $aUrl_test[$rand_num]
      ;ConsoleWrite($url_test_speed & @CRLF)
   Until InetGetSize($url_test_speed,1) > 0
   $nSize = InetGetSize($url_test_speed)
;~    MsgBox(0,'',$nSize)
   $nSize = Ceiling($nSize/1024/1024) ;традиционная система принмает значения 1мб=1024кб
   $hTimer = TimerInit() ; Запускает таймер и хранит дескриптор в переменной
   InetGet($url_test_speed, @TempDir&"\10mb.bin")
   ConsoleWrite(@TempDir&"\10mb.bin" & @CRLF)
   $iDiff= Ceiling(TimerDiff($hTimer)/1000)
;~    $speed_internet = Ceiling($nSize*1.25*10/$iDiff)
	$speed_internet=Ceiling($nSize/$iDiff)
   ConsoleWrite("~"&$speed_internet&" Mb" & @CRLF)
   FileDelete(@TempDir&"\10mb.bin")
   If IsNumber($speed_internet) Then
      Return $speed_internet
   Else
      Return 0
   EndIf
EndFunc

У вас была ошибка в измерении скорости, и измерении размера файла.
OffTopic:
Это же как 2+2

Что вы пытались вычислить этой формулой?
Код:
$speed_internet = Ceiling($nSize*1.25*10/$iDiff)

OffTopic:
Хотя могу подумать что у меня тоже ошибка, я 10 и 100 мб файлы скачиваю и все равно 1мб\сек :scratch:
 
Автор
A

ArgoNaft

Новичок
Сообщения
129
Репутация
0
нет это не ошибка :smile:, это как раз и есть скорость вашего интрнета
 
Верх