История изменений
Исправление 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 и не требует доп.синхронизаций, может ещё и в этом был фокус: сорц.