1
Общий раздел / Re: Еще один тест на производительность.
« : Май 10, 2018, 09:19:13 pm »
Раза в 2 примерно.
Онлайн компилятор Oberon-07/11
Путеводитель по Оберон-проектам.
Логи jabber-конференции.
Онлайн исходники BlackBox: тут:WeBB и на github
Исходники Project Oberon V4 на github.
Сборник решений задач книги "Современное программирование с нуля!" тут. А обсуждение здесь.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
Тогда странно, что сортировка не самая быстрая, возможно, что это слабость компилятора или недочёт в библиотеках.Самая быстрая ( 256-buckets) - сортировка подсчетом. Там, правда, есть недостаток. На файлах от 8ГБ уже может возникнуть переполнение счетчиков, а если увеличить разрядность до 64 бит, они не влезут в ограничения.
Предлагаю добавить в тесты файлы с нестандартными размерами, например 119 946 308 байт или 163 840 004 байт (достаточно большое простое число, умноженное на 4). Идея в том, что бы файл не делился на блоки равных размеров -- это может выявить ошибки в алгоритмах сортировки.Да вроде никто не делит на равные блоки.
MODULE tiso;
IMPORT SYSTEM, IOChan, ChanConsts, IOConsts, RndFile;
IMPORT STextIO, SWholeIO;
VAR
inbuf: ARRAY [0..1024] OF CARDINAL;
locsRead : CARDINAL;
inchn: IOChan.ChanId;
res: ChanConsts.OpenResults;
BEGIN
RndFile.OpenOld(inchn, "input", RndFile.raw, res);
IF res = ChanConsts.opened THEN
IOChan.RawRead(inchn, SYSTEM.ADR(inbuf), SIZE(inbuf), locsRead);
SWholeIO.WriteCard(locsRead,8);
STextIO.WriteLn;
RndFile.Close(inchn);
ELSE
STextIO.WriteString("open fail");
STextIO.WriteLn
END;
END tiso.
На FAT32 же нельзя делать файлы объёмом даже в 4 гигабайта ровно -- только меньше...Зато можно от 2 до 4.
MODULE tpim;
IMPORT SYSTEM, FIO, StrIO,NumberIO;
VAR
inf:FIO.File;
inbuf: ARRAY [0..1023] OF CARDINAL;
VAR
n : CARDINAL;
BEGIN
inf := FIO.OpenToRead("input");
IF FIO.IsNoError(inf) THEN
n := FIO.ReadNBytes(inf,SIZE(inbuf),SYSTEM.ADR(inbuf));
NumberIO.WriteCard(n, 8); StrIO.WriteLn;
ELSE
StrIO.WriteString("open fail"); StrIO.WriteLn;
END;
END tpim.
gm2 tpim.mod -fpim