[DCC32 Hinweis] H2443 Inline-Funktion 'RenameFile' hat nicht weil Einheit erweitert 'Winapi.Windows' angegeben ist nicht in VERWENDET ListeWarum ist Sysutils.RenameFile inline?
Ich verstehe, dass eine Funktion inlining schneller den Code macht. Aber ich sehe den Gewinn nur an engen Stellen. Zum Beispiel eine kleine Funktion in einer großen Schleife aufrufen.
Aber wie kann das Inlining einer IO-Funktion die Geschwindigkeit verbessern? Ich meine, durch das Einfügen von RenameFile gewinnen Sie einige Mikrosekunden. Aber die Ausführung der Funktion selbst kann Millisekunden, vielleicht sogar Dutzende von Millisekunden dauern, wenn der Datenträger ausgelastet ist.
Noch mehr, wenn Sie RenameFile verwenden, befinden Sie sich wahrscheinlich in einem Codeblock, in dem Sie andere E/A-Vorgänge ausführen. Dieser Codeblock wird also viel Zeit in Anspruch nehmen. Also ist der Gewinn jetzt noch unbedeutender.
Aus dem gleichen Grund, dass sie ihren Parameter 'const' deklarierten ... ist der Leistungsgewinn vielleicht nicht so signifikant, aber er ist mehr oder weniger frei. (Wenn Sie nicht wüssten, deklarieren Sie einen String-Parameter 'const', entfernen Sie den Inc/dec seiner Referenzzählung, wenn er an eine Funktion übergeben wird). –
@ KenBourassa-CONSTwird tatsächlich mehr als das und unter bestimmten Bedingungen (oft getroffen) ist der Geschwindigkeitsgewinn groß. – Ampere
und was macht es sonst im Zusammenhang mit einem String?Für eine Aufzeichnung wird sie an Adresse weitergegeben, anstatt ihren Inhalt zu kopieren, also ja, sicher, der Geschwindigkeitsgewinn kann ziemlich groß sein. Aber im Zusammenhang mit einem String-Parameter ist die Referenzzahl (und alles, was damit zusammenhängt) der einzige Unterschied AFAIK. –