16
Общий раздел / Re: Расширенный тест на производительность.
« : Декабрь 12, 2016, 08:13:54 pm »
Блин, скопировал не оттуда. locsRead должно быть вместо n, или наоборот.
Онлайн компилятор Oberon-07/11
Путеводитель по Оберон-проектам.
Логи jabber-конференции.
Онлайн исходники BlackBox: тут:WeBB и на github
Исходники Project Oberon V4 на github.
Сборник решений задач книги "Современное программирование с нуля!" тут. А обсуждение здесь.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
MODULE tulm;
IMPORT SYSTEM, StdIO,InOut;
VAR
inf:StdIO.FILE;
inbuf: ARRAY [0..1023] OF CARDINAL;
VAR
n : CARDINAL;
ok:BOOLEAN;
BEGIN
ok := StdIO.Fopen(inf, "input", StdIO.read, FALSE);
IF ok THEN
locsRead := 1023;
ok := StdIO.Fread(SYSTEM.ADR(inbuf), 4, locsRead ,inf);
IF ok THEN
InOut.WriteCard(locsRead,8); InOut.WriteLn;
END;
ok := StdIO.Fclose(inf);
ELSE
InOut.WriteString("open fail"); InOut.WriteLn;
END;
END tulm.
gm2 tulm.mod -flibs=ulm,pim #RTS: unhandled exception #1: IOException.notAvailable Read
илиEXCEPTIONS.mod:57:3:IOChan: ChanId specified is invalid in RAISE
Для внешней сортировки всегда полезнее иметь несколько дисков, чем несколько процессоров.Да, а многопоточное решение по производительности не отличимо в этом тесте от однопоточного.
Что очень странно. Единственное объяснение, которое я могу придумать - все уперлось в диск. А наблюдаемая разница на моем нетбуке - это потому что проц совсем дохлый.
То есть выходит, что чтобы и читать и писать, нужно использовать openedforrandom. Т.е., вероятно, использовать не SeqFile, а RndFile.Я надеялся, что SeqFile как-то оптимизирван для последовательного чтения. Но похоже, там банально вызывается какой-нибудь fread/fwrite без буфферизации. Попробовал еще на аде. Там та же петрушка, только ещё медленнее раза в 2-3.
Да! Еще надо поставить либу pth - если система дебианоподобная, то так: apt-get install libpth-devО! Поставил и заработало, даже собирать не пришлось.
SeqFile.OpenWrite(spill[spno], name, SeqFile.raw+SeqFile.read+SeqFile.old, res);