Можем ли мы заставить плагин загрузки DwinHs Inno Setup работать быстрее?
У DwinHs есть DwinsHs_Data_Buffer_Length
макро. Я установил это значение 8192
но скорость загрузки все еще довольно низкая.
Например, у меня соединение 200 Мбит, а файл 25 МБ. Загрузка занимает две с половиной минуты.
Я прочитал некоторые ответы здесь:
Какой размер буфера памяти лучше всего выделить для загрузки файла из Интернета?
Вместо этого предлагается буфер 16K. В любом случае, есть ли способ, которым мы можем использовать максимальную длину буфера с Pascal для данной пользовательской системы?
Браузеры загружаются быстрее, так почему мы не можем здесь, в Inno Setup?
пример
[ISPP]
#define HelpDocSetupURL "https://www.publictalksoftware.co.uk/downloads/PublicTalksHelpDocumentationSetup.exe"
[Setup]
AppID = TestID
AppName = Test App
OutputBaseFilename = My_Test_App_Setup
AppVersion = 1.0
DefaultDirName = {pf}\MyTestApp
DefaultGroupName = My Test App
[Tasks]
Name: "downloadhelp"; Description: "Task Desc"; GroupDescription: "Group Desc";
[Files]
Source: "{tmp}\HelpDocSetup.exe"; \
DestDir: "{app}"; \
Flags: external deleteafterinstall; \
Tasks: downloadhelp; \
Check: DwinsHs_Check( ExpandConstant('{tmp}\HelpDocSetup.exe'), '{#HelpDocSetupURL}', 'My_Setup', 'Get', 0, 0 )
[Code]
program Setup;
#define DwinsHs_Use_Predefined_Downloading_WizardPage
#define DwinsHs_Data_Buffer_Length 8192
#include "dwinshs.iss"
procedure InitializeWizard();
begin
DwinsHs_InitializeWizard(wpPreparing);
end;
procedure CurPageChanged(CurPageID: Integer);
begin
DwinsHs_CurPageChanged(CurPageID, nil, nil);
end;
function ShouldSkipPage(CurPageId: Integer): Boolean;
begin
Result := False;
DwinsHs_ShouldSkipPage(CurPageId, Result);
end;
function BackButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
DwinsHs_BackButtonClick(CurPageID);
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
DwinsHs_NextButtonClick(CurPageID, Result);
end;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
DwinsHs_CancelButtonClick(CurPageID, Cancel, Confirm);
end;
1 ответ
Автор программы ответил мне на эту проблему и предложил:
Вы можете попробовать установить размер кеша на 16384, 32768 или 655536.
Итак, я установил:
#define DwinsHs_Data_Buffer_Length 655536
Результаты намного лучше:
Как видите, всего 10 секунд.
Я не знаю, что влияние такого значения кэша будет иметь для тех, кто имел более медленное подключение к Интернету.