Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Optimierung Typkonvertierung von in place Konstanten (https://www.delphipraxis.net/167150-optimierung-typkonvertierung-von-place-konstanten.html)

CCRDude 15. Mär 2012 13:00

Delphi-Version: XE

Optimierung Typkonvertierung von in place Konstanten
 
An einigen Codestellen habe ich noch keine Unicode-Unterstützung und daher entsprechende Warnungen. Bei der Umstellung auf Delphi XE stellt sich mir nun folgende Situation und Frage:

Ich habe diverse Aufrufe von Format('Hallo %s', [s]), bei denen ich ein AnsiString als Rückgabewert brauche. Also binde ich die Unit AnsiStrings ein.

Die "sichere" Variante, nun die richtige Version von Format aufzurufen wäre, 'Hallo %s' als Konstante vom Typ AnsiString zu definieren und zu verwenden.

Was passiert nun, wenn ich Format(AnsiString('Hallo %s'), [s]) verwende? Klar, dadruch wird die gewünschte Version von Format aufgerufen, nur: wird bereits beim Kompilieren hier eine AnsiString-Konstante verwendet, oder übersetzt der Compiler eine WideString-Version, die er zur Laufzeit in den AnsiString castet?

Da ich in der gerade in Arbeit befindlichen Unit etliche Hundert solcher Stellen habe, und diese - in Maßen - zeitkritisch ist, wäre diese Information hilfreich um festzulegen, ob sich der Mehraufwand, explizit Konstanten zu definieren, lohnt.

CCRDude 20. Jun 2012 08:46

AW: Optimierung Typkonvertierung von in place Konstanten
 
Inzwischen kam die Lokalisierung dazu - daimt macht es eh keinen (oder zumindest sehr wenig) Sinn mehr, aus Performance-Gründen ANSI und Unicode getrennt handzuhaben, weil die Performance dann vermutlich in Konvertierungen oder getrennter Handhabung im Übersetzungsmodul draufgehen würde.

Trotzdem - interessant bleibt die Frage. Falls keine Antwort bekannt ist, werd ich das wohl mal in den Disassembler hauen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz