Вверх ↑
Этот топик читают: Гость
Ответов: 113
Рейтинг: 1
#1: 2017-04-23 15:10:07 ЛС | профиль | цитата
как можно ускорить скорость скачивания файла
программа



Add(HTTP_Get,9339467,245,322)
{
link(onStatus,14318700:doValue,[])
link(onDownload,13212992:doCompare,[])
link(onURLSize,7436413:doValue,[])
link(URL,110834:Part1,[])
link(FileName,110834:Part2,[])
}
Add(VisualStrings,821271,245,112)
{
Lines=#63:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/|
Width=326
}
Add(FormatStr,15544346,245,210)
{
DataCount=3
Mask="%1%3;%2%3"
Point(FString)
link(Str1,821271:Text,[])
link(Str2,15615411:Var2,[])
link(Str3,14299670:Var2,[])
}
Add(Dir,9703857,196,126)
{
}
Add(MultiStrPart,110834,245,259)
{
link(Str,15544346:FString,[])
}
Add(Hub,3356587,182,252)
{
OutCount=5
link(onEvent1,15544346:doString,[(220,258)(220,216)])
link(onEvent2,110834:doSplit,[])
link(onEvent3,8419731:doString,[])
}
Add(MathParse,6283331,392,406)
{
MathStr="%1*(100/%2)"
link(onResult,4239681:doPosition,[])
link(X1,1001856:Var2,[])
link(X2,7885029:Var2,[])
}
Add(Memory,7436413,399,336)
{
}
Add(VisualStrings,7611104,259,140)
{
Lines=#8:KVRT.exe|
Width=74
}
Add(DirTools,6500849,511,329)
{
Point(doGetSize)
link(onOK,15008562:doWork1,[(557,335)])
link(Source,8419731:FString,[])
link(Dest,3350850:Var1,[(524,313)])
}
Add(If_else,13212992,448,329)
{
link(onTrue,6500849:doCopy,[])
link(Op1,1001856:Var1,[(454,310)(398,310)])
link(Op2,7885029:Var3,[(461,317)(434,317)(434,390)])
}
Add(Memory,14318700,294,322)
{
link(onData,11553444:doEvent1,[(338,328)(338,454)])
}
Add(GetDataEx,1001856,392,371)
{
Angle=3
link(Data,14318700:Value,[(300,376)])
}
Add(GetDataEx,7885029,399,385)
{
link(Data,7436413:Value,[])
}
Add(FormatStr,10789873,588,266)
{
Mask="%1RemovTool\%2"
Point(FString)
link(Str1,9703857:CurrentDir,[(594,187)(202,187)])
link(Str2,1674970:Var3,[(601,194)])
}
Add(FormatStr,8419731,511,266)
{
Mask="%1%2"
Point(FString)
link(onFString,10789873:doString,[])
link(Str1,15615411:Var3,[(517,166)])
link(Str2,1674970:Var2,[])
}
Add(GetDataEx,15615411,252,161)
{
Angle=3
link(Data,9703857:TempDir,[(216,166)])
}
Add(GetDataEx,14299670,259,189)
{
link(Data,7611104:Text,[])
}
Add(GetDataEx,1674970,518,189)
{
Angle=3
link(Data,14299670:Var3,[])
}
Add(FileTools,9332943,588,371)
{
link(onEnd,6867110:doEvent,[])
link(FileName,3350850:Var2,[])
}
Add(GetDataEx,3350850,588,308)
{
link(Data,10789873:FString,[])
}
Add(IndexToChanel,6867110,658,371)
{
link(onEvent1,9256246:doEvent1,[(698,377)(698,328)])
link(onEvent2,13582198:doEvent1,[])
}
Add(Hub,10948474,126,385)
{
link(onEvent1,3356587:doEvent1,[(161,391)(161,258)])
link(onEvent2,15008562:doWork2,[])
}
Add(Hub,15862550,189,336)
{
link(onEvent1,9339467:GetURLSize,[])
link(onEvent2,9339467:doDownload,[(224,349)(224,328)])
}
Add(DoData,9094245,756,378)
{
link(onEventData,15018270:doExec,[])
link(Data,3350850:Var3,[(762,313)])
}
Add(HubEx,15008562,553,392)
{
link(onEvent,9332943:doFileExists,[])
}
Add(Hub,9256246,707,322)
{
OutCount=3
link(onEvent1,15862550:doEvent1,[(730,328)(730,302)(173,302)(173,342)])
link(onEvent3,9632103:doOn,[(739,342)(739,482)])
}
Add(Hub,13582198,707,378)
{
OutCount=3
link(onEvent1,9094245:doData,[])
link(onEvent3,9632103:doReset,[(739,398)(739,475)])
}
Add(MathParse,5349751,392,455)
{
MathStr="(%1/1024)/1024"
link(onResult,13346526:doOperation,[])
}
Add(Hub,11553444,350,448)
{
link(onEvent1,6283331:doCalc,[(378,454)(378,412)])
link(onEvent2,5349751:doCalc,[])
}
Add(FormatStr,14998093,518,455)
{
Mask="%1 Mб"
link(onFString,13287947:doText,[])
}
Add(Label,13287947,812,455)
{
Left=100
Top=30
Width=87
Height=17
Visible=1
Transparent=0
Caption=" "
Alignment=2
Point(doVisible)
}
Add(Math,13346526,455,455)
{
OpType=35
Op2=0.001
link(onResult,14998093:doString,[])
}
Add(Switch,9632103,756,462)
{
DataOn=Integer(0)
DataOff=Integer(1)
Point(doOn)
link(onSwitch,13287947:doVisible,[])
}
Add(ProgressBarRush,4239681,455,406)
{
Top=254
Width=394
Align=4
}
Add(Button,10665984,70,385)
{
Left=15
Top=65
Width=90
Height=50
Caption="Download"
link(onClick,10948474:doEvent1,[])
}
Add(WinExec,15018270,819,378)
{
}



а вот при помощи утилиты wget - wget.exe http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe
быстрее получается
карма: 0
well done turner
0
vip
#1.1контекстная реклама от партнеров
Ответов: 1342
Рейтинг: 31
#2: 2017-04-23 21:47:05 ЛС | профиль | цитата
Во всех загрузчиках используются несколько потоков на скачивание файлов, за счёт этого и качается быстрей, а в штатном HTTP_Get скачка идёт в 1 поток, то есть на примере штатного компонента, выполняется 1 запрос HTTP GET, и в ответ сервер возвращает один массив, сторонние же загрузчики выполняют от 2-х и вплоть до n-го количества таких же запросов, но с указанием начального байта с которого идёт скачивание файла, то есть фактически качается n-е количество массивов, собирается это 2-мя путями, либо напрямую в память (на примере компонента MemoryStream, точки doPosition) пишется весь файл отдельными потоками, либо сначала всё качается, затем собирается в единое целое по порядочку)
карма: 2

1
Голосовали:powerbatman
Ответов: 113
Рейтинг: 1
#3: 2017-04-24 12:09:30 ЛС | профиль | цитата
Rysik писал(а):
Rysik

спасибо за рзъяснение , теперь стал понятен сам процесс
карма: 0
well done turner
0
3
Сообщение
...
Прикрепленные файлы
(файлы не залиты)