AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi "Component is TButton" oder "Component.ClassName"

"Component is TButton" oder "Component.ClassName"

Ein Thema von hoika · begonnen am 10. Dez 2019 · letzter Beitrag vom 15. Dez 2019
Antwort Antwort
Seite 1 von 2  1 2   
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 13:34
Hallo,

solltest Du nicht besser classType verwenden anstelle von className?
Diskussion hier.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 13:39
Hallo,
ClassType hört sich für mich auch wieder nach RTTI an.
Heiko
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 13:50
Hallo,
ich bin recht eindeutig für "Component is TButton".
Wenn Geschwindigkeit eine Rolle spielt dann hast Du ein falsches Design. In der UI spielt Geschwindigkeit eh meist keine Rolle.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 14:00
Hallo,
Zitat:
Wenn Geschwindigkeit eine Rolle spielt
Einspruch, natürlich sollte die Performance immer eine Rolle spielen,
sonst hätten wir heute noch 286-er mit 16 MHz (ja der mit dem Turbo ! )
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 14:04
Hallo Uwe,
das sieht auf jeden Fall schneller als mein String-Vergleich aus

Danke.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 14:36
Bei x is someclass fügt der Compiler einen Aufruf auf System._IsClass ein. Das ist nicht nur >10mal schneller als der ganze Kram, der in TObject.ClassName und dem String vergleich passiert, sondern - und das ist viel wichtiger - es liefert auch True zurück, wenn x eine Instanz einer von someclass abgeleiteten Klasse ist (hallo Polymorphie)

Fast schockierend, dass Delphientwickler immer noch denken, dass etwas, was eine Funktion beinhaltet, die einen string zurückliefert, mit dem etwas gemacht wird, irgendwie schneller sein könnte als ein bisschen Pointer vergleichen.

P.S.: Schneller als is wäre übrigens InheritsFrom wenn man auf den assigned Check verzichten kann - das spart nochmal einen Call
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (10. Dez 2019 um 14:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#7

AW: "Component is TButton" oder "Component.ClassName"

  Alt 15. Dez 2019, 13:37
Ihr dürft hier auch nicht RTTI mit RTTI verwechseln.

Die "alte" RTTI aka TypeInfo ist sehr einfach und schnell.
Die neuere "erweiterte" RTTI ist da schon komplexer und langsamer, da hier mit instanziieren Objekten/Interfaces gearbeitet wird, welches ein klein bissl Zeit braucht, für die Initialisierung und auch beim Multithreading muß man teilweise etwas aufpassen.

Seit 2009 ist die TypeInfo von ANSI auf UTF-8 umgestellt. Wo vorher nur ein String verglichen wurde, muß er nun erst nach Unicode (UCS2 UTF-16) umgewandelt werden.
Also vom Aufbau her ist die TypeInfo seit Jahrzehnten praktisch unverändert und damals, auf den uralten langsamen Rechnern, bis hin zu Zeiten des DOS, war die auch schon sehr sparsam und flott.

PS: Neben ClassType/ClassInfo und ClassName gibt es auch InheritsFrom und ClassNameIs.
InheritsFrom wie IS und ClassNameIs halt mit String statt ClassType.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Dez 2019 um 13:40 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 15:44
Hallo,
Zitat:
Wenn Geschwindigkeit eine Rolle spielt
Einspruch, natürlich sollte die Performance immer eine Rolle spielen,
sonst hätten wir heute noch 286-er mit 16 MHz (ja der mit dem Turbo ! )
Einspruch abgelehnt. Natürlich sollte die Performance NICHT immer eine Rolle spielen, sondern nur in Ausnahmefällen.
https://clean-code-developer.de/die-..._Optimierungen
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 16:05
Einspruch abgelehnt. Natürlich sollte die Performance NICHT immer eine Rolle spielen, sondern nur in Ausnahmefällen.
https://clean-code-developer.de/die-..._Optimierungen
Auch falsch - es kommt auf den Code an, den man entwickelt. Wenn ich was in nem ButtonClick Implementiere ist es herzlich egal, obs in dem Bruchteil einer Nanosekunde oder in 5 Millisekunden passiert. Wenn man allerdings in einer Kern Laufzeit Klasse oder Methode entwickelt, dann ist es wichtig, die Sprache, Compiler und Standard Runtime zu kennen, damit man das Optimum rausholt.

Wenn man aber sieht, wie selbst manche Runtime Entwickler nen halbes Duzend Ebenen der Abstraktion aufeinander schichten und das Endergebnis einfach nur unerträglich langsam werden kann, dann könnte man einfach nur


Übrigens regt sich fast jeder auf, dass dieses vermaledeite Electron so resourcenhungrig ist und nen blöder Chrome mit zig Tabs die Gigabytes auffuttert wie Kekse... aber Code Optimieren ist böse oder was?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (10. Dez 2019 um 16:11 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: "Component is TButton" oder "Component.ClassName"

  Alt 10. Dez 2019, 16:29
Hallo,
Zitat:
und das ist viel wichtiger - es liefert auch True zurück, wenn x eine Instanz einer von someclass abgeleiteten Klasse ist
Gut zu wissen.
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 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-2025 by Thomas Breitkreuz