Results 1 to 6 of 6

Thread: speed tip TFormatSettings

  1. #1
    Reader
    Join Date
    May 2002
    Location
    Holland
    Posts
    3,382

    speed tip TFormatSettings

    Een tip: als er performance in het geding is gebruik dan nooit in een locale routine TFormatSettings.Create().

  2. #2
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Die laad waarschijnlijk defaults via OS locale routines ?

  3. #3
    Reader
    Join Date
    May 2002
    Location
    Holland
    Posts
    3,382
    Ik denk het inderdaad. Performance van een inleesroutine van 4 seconden naar 0.2 na aanpassing.

  4. #4
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Wat is de aanpassing dan? Ik vind 4 seconden heeeeel veeeel.
    Delphi is great. Lazarus is more powerfull

  5. #5
    Reader
    Join Date
    May 2002
    Location
    Holland
    Posts
    3,382
    De oplossing is dat ik in mijn lokale TryFloat() routine niet een TFormatSettings.Create aanroep + aanpas, maar deze 1x aanmaak in den beginne en per TryFloat() call alleen even de decimalseparator aanpas

  6. #6
    De constructor roept een overload aan die op basis van een locale een hoop instellingen gaat ophalen. Dat is inderdaad een hele lijst API calls omdat waarde voor waarde op te halen.

    Als je toch zelf de specifieke decimal separator in wilt stellen en de rest niet nodig hebt, dan kan je ook TFormatSettings.Invariant gebruiken. Die geeft een record dat is geinitialiseerd met een (kleiner) aantal vaste waarden. Overigens kan het dan nog steeds iets efficienter zijn om 'm te cachen, want je krijgt tenslotte nog steeds elke keer een nieuw, geinitialiseerd record terug, al zal de overhead minimaal zijn, en praktisch verwaarloosbaar vergeleken met de API-versie.

    En je kan natuurlijk ook een ongeinitialiseerd record gebruiken. De constructors zijn er vooral om een TFormatSettings te initialiseren met default waarden op basis van vaste constanten, je huidige omgeving, of een specifieke locale.
    1+1=b

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •