LINUX.ORG.RU

История изменений

Исправление dimgel, (текущая версия) :

Не было. :) Про endl я знаю. Я ускорению, помнится, и сам удивился – т.к. по моим понятиям, там разница разве что в виртуальных вызовах (хотя и форматтеры крайне неудобные и уродские). С третьей стороны, у меня там не просто printf, а sprintf в буфер с последующим одним-единственным системным вызовом write(), который atomic и не требует доп.синхронизаций (а через cout я построчно выводил ЕМНИП с использованием спинлока), может ещё и в этом был фокус: сорц.

А может и endl был; иначе какой смысл в спинлоке если оно буфер не сбросит в конце оператора. Да, наверное был. Но это собственно не недостаток моего кода, а неизбежность если не хочешь чтобы вывод от разных потоков перемешался.

А то, если вставить fflush() после fprintf() скорость тоже может просесть.

А вот с atomic write() не проседает. :-P Но и с обычным printf() ускорение тоже было ЕМНИП заметное, и fflush() там тоже наверняка был, иначе никак. А то что я нахимичил – это уже байтодрочерство чисто прикола ради: посмотреть что получится.

Исправление dimgel, :

Не было. :) Про endl я знаю. Я ускорению, помнится, и сам удивился – т.к. по моим понятиям, там разница разве что в виртуальных вызовах (хотя и форматтеры крайне неудобные и уродские). С третьей стороны, у меня там не просто printf, а sprintf в буфер с последующим одним-единственным системным вызовом write(), который atomic и не требует доп.синхронизаций (а через cout я построчно выводил ЕМНИП с использованием спинлока), может ещё и в этом был фокус: сорц.

А может и endl был; иначе какой смысл в спинлоке если оно буфер не сбросит в конце оператора. Да, наверное был. Но это собственно не недостаток моего кода, а неизбежность если не хочешь чтобы вывод от разных потоков перемешался.

А то, если вставить fflush() после fprintf() скорость тоже может просесть.

А вот с atomic write() не проседает. :-P Но и с обычным printf ускорение тоже было ЕМНИП заметное; то что я нахимичил – это уже байтодрочерство чисто прикола ради: посмотреть что получится.

Исправление dimgel, :

Не было. :) Про endl я знаю. Я ускорению, помнится, и сам удивился – т.к. по моим понятиям, там разница разве что в виртуальных вызовах (хотя и форматтеры крайне неудобные и уродские). С третьей стороны, у меня там не просто printf, а sprintf в буфер с последующим одним-единственным системным вызовом write(), который atomic и не требует доп.синхронизаций (а через cout я построчно выводил ЕМНИП с использованием спинлока), может ещё и в этом был фокус: сорц.

А может и endl был; иначе какой смысл в спинлоке если оно буфер не сбросит в конце оператора. Да, наверное был. Но это собственно не недостаток моего кода, а неизбежность если не хочешь чтобы вывод от разных потоков перемешался.

А то, если вставить fflush() после fprintf() скорость тоже может просесть.

А вот с atomic write() не проседает. :-P

Исправление dimgel, :

Не было. :) Про endl я знаю. Я ускорению, помнится, и сам удивился – т.к. по моим понятиям, там разница разве что в виртуальных вызовах (хотя и форматтеры крайне неудобные и уродские). С третьей стороны, у меня там не просто printf, а sprintf в буфер с последующим одним-единственным системным вызовом write(), который atomic и не требует доп.синхронизаций (а через cout я построчно выводил ЕМНИП с использованием спинлока), может ещё и в этом был фокус: сорц.

А может и endl был; иначе какой смысл в спинлоке если оно буфер не сбросит в конце оператора. Да, наверное был. Но это собственно не недостаток моего кода, а неизбежность если не хочешь чтобы вывод от разных потоков перемешался.

Исправление dimgel, :

Не было. :) Про endl я знаю. Я ускорению, помнится, и сам удивился – т.к. по моим понятиям, там разница разве что в виртуальных вызовах (хотя и форматтеры крайне неудобные и уродские). С третьей стороны, у меня там не просто printf, а sprintf в буфер с последующим одним-единственным системным вызовом write(), который atomic и не требует доп.синхронизаций (а через cout я построчно выводил ЕМНИП с использованием спинлока), может ещё и в этом был фокус: сорц.

А может и endl был; иначе какой смысл в спинлоке если оно буфер не сбросит в конце оператора. Да, наверное был. Но это собственно не недостаток моего кода, а неизбежность если не хочешь чтобы вывод от разных потоков перемешался.

Исправление dimgel, :

Не было. :) Про endl я знаю. Я ускорению, помнится, и сам удивился – т.к. по моим понятиям, там разница разве что в виртуальных вызовах (хотя и форматтеры крайне неудобные и уродские). С третьей стороны, у меня там не просто printf, а sprintf в буфер с последующим одним-единственным системным вызовом write(), который atomic и не требует доп.синхронизаций (а через cout я построчно выводил ЕМНИП с использованием спинлока), может ещё и в этом был фокус: сорц.

Исходная версия dimgel, :

Не было. :) Про endl я знаю. Я ускорению, помнится, и сам удивился – т.к. по моим понятиям, там разница разве что в виртуальных вызовах (хотя и форматтеры крайне неудобные и уродские). С третьей стороны, у меня там не просто printf, а sprintf в буфер с последующим одним-единственным системным вызовом write(), который atomic и не требует доп.синхронизаций, может ещё и в этом был фокус: сорц.