![]() |
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. |
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 20:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz