Forum > FPC development

[SOLVED] Improvement of procedure TSHA512Base.Update

(1/1)

lagprogramming:
packages/fcl-hash/src/fpsha512.pp has

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure TSHA512Base.Update(PBuf: PByte; Size: UInt32);var  Len: UInt32;begin  Inc(TotalLength, Int64(UInt32(Size)) * 8);  while Size > 0 do  begin    Len:=Sizeof(Buffer)-Index;    if Len <= UInt32(Size) then    begin      Move(PBuf^, Buffer[Index], Len);      Dec(Size, Len);      Inc(PBuf, Len);      Compress;      Self.Index := 0;    end else    begin      Move(PBuf^, Buffer[Index], Size);      Inc(Self.Index, Size);      Size := 0;    end;  end;end;In order to exit the loop the original code sets a zero value to Size. The attached patch changes the line "Size := 0;" with "Break;". In addition to increased readability, the CPU will avoid a failed prediction of the "Size > 0" condition.

AlexTP:
Posted to https://gitlab.com/freepascal.org/fpc/source/-/issues/40435

abouchez:
Sounds like a non-improvement to me.

Performance would be identical for sure, and readability not enhanced to my taste.

AlexTP:
Anyway, I keep posting suggestions from 'lagprogramming'. He does minor work, but useful.

Navigation

[0] Message Index

Go to full version