Connect with us

Künstliche Intelligenz

Effizientes C++: Die versteckten Kosten des Rückgabedatentyps auto


Im heutigen Beitrag möchte ich mich mit dem Schreiben von effizientem C++-Code befassen. Dieses Thema lässt sich nicht in einem einzigen Beitrag behandeln. Zum Start möchte ich mich auf die Steuerung der Zeit konzentrieren, die der Compiler benötigt, und dabei ein Element der Sprache herausgreifen: auto.

Weiterlesen nach der Anzeige


Portrait von Andreas Fertig

Portrait von Andreas Fertig

Andreas Fertig ist erfahrener C++-Trainer und Berater, der weltweit Präsenz- sowie Remote-Kurse anbietet. Er engagiert sich im C++-Standardisierungskomitee und spricht regelmäßig auf internationalen Konferenzen. Mit C++ Insights ( hat er ein international anerkanntes Tool entwickelt, das C++-Programmierenden hilft, C++ noch besser zu verstehen.

Ich halte die Typinferenz auto für eine großartige Erweiterung der Sprache. Mit der C++14-Version von auto als Rückgabedatentyp ist es ein guter Weg, flexiblere und akkuratere Funktionen zu schreiben. Allerdings geht das zu Kosten eines längeren Kompiliervorgangs.

Aber beginnen wir ohne auto als Rückgabedatentyp. Hier ist eine Dummy-Funktion, die nichts Interessantes macht:


int Fun(bool b, int val)
{
  if(b) {
    return val * 2;
  } else {
    return val / 2 * 3;
  }
}


Ich brauchte für das Beispiel lediglich eine Funktion mit einem Rumpf, der für den Compiler nicht völlig trivial war. Da es im heutigen Beitrag um effizientes C++ geht, möchte ich über die Zeit sprechen, die zum Kompilieren dieser wenigen Zeilen Code erforderlich ist. Dabei geht es nicht unbedingt um die absoluten Zahlen, da diese auf verschiedenen Rechnern unterschiedlich sein werden.

Wie kannst du deinen Compiler überhaupt messen? Eine Möglichkeit ist der Linux-Befehl time. Dieser liefert jedoch nur wenige Informationen, die nicht dabei helfen, deine Build-Zeiten zu verbessern. Wenn dir ein Build langsam erscheint, benötigst du kein Tool, das dir sagt, dass du recht hast, sondern ein Tool, das dir zeigt, wo eine mögliche Beschleunigung möglich ist.

Wenn time nicht das richtige Tool ist, was dann? Ganz einfach: dein Compiler! Zumindest Clang. Er verfügt über die hilfreiche Befehlszeilenoption -ftime-trace. Damit kann Clang für jede Objektdatei eine .json-Datei mit zahlreichen Daten erstellen. Du kannst die Informationen beispielsweise mit Chrome und seinem Tracing Viewer untersuchen. Öffne einfach einen Tab und gib chrome://tracing ein. Lade dann die JSON-Datei. Für den obigen Code auf meinem Rechner mit Clang 19 sieht die Visualisierung so aus:

Weiterlesen nach der Anzeige


Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Ein Wort zu meiner Vorgehensweise: Ich gehe davon aus, dass die Funktion Fun in einer Header-Datei steht und in der aktuellen Übersetzungseinheit nicht verwendet wird. Einfachheitshalber habe ich keinen anderen Code eingefügt oder verwendet. Ich habe eine .cpp-Datei mit dem oben gezeigten Code wie folgt compiliert:


clang++ -c a.cpp -ftime-trace


Zurück zur Visualisierung, auch wenn sie etwas kompakt ist. Die obere Leiste mit der Aufschrift ExecuteCompiler benötigt 6,499 ms.

Hier ist eine modifizierte Version des vorherigen Codes. Die einzige Änderung, die ich vorgenommen habe, ist die auto statt int als Rückgabedatentyp.


auto Fun(bool b, int val)
{
  if(b) {
    return val * 2;
  } else {
    return val / 2 * 3;
  }
}


Wenn ich diesen Code messe, erhalte ich folgende Ergebnisse:


Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Dieses Mal benötigt ExecuteCompiler 8,114 ms. Das sind ungefähr 1,5 ms mehr. Ja, das stimmt, das ist nur ein einzelner Datenpunkt. Vielleicht haben wir es hier mit Jitter zu tun. Das kann sein. Vielleicht gibt es Aufrufe, bei denen die beiden Zahlen näher beieinander liegen, aber es ist unwahrscheinlich, dass sie jemals gleich werden. Ich bin mir hier sicher, weil im zweiten Trace ein zusätzlicher Schritt erscheint: ParseFunctionDefinition. Dieser Schritt ist nur vorhanden, wenn man auto als Rückgabedatentyp für die Funktion verwendet oder die Funktion tatsächlich aufruft. Aber ich gehe davon aus, dass Fun in einer Header-Datei deklariert ist.

Das zweite Codebeispiel benötigt wegen ParseFunctionDefinition länger zum Kompilieren. Mit auto von C++14 als Rückgabedatentyp muss der Compiler die Funktionsdefinition nachschlagen, wenn er die Deklaration analysiert. Ohne auto verschiebt der Compiler die Analyse des Funktionsrumpfs, bis er wirklich benutzt wird.

Wenn du die Dauer des Kompiliervorgangs optimieren möchtest, solltest du auf Funktionen achten, die auto als Rückgabedatentyp in Header-Dateien verwenden.


(rme)



Source link

Künstliche Intelligenz

MacBook Neo: Bewegt Apples Billig-Mac PC-Nutzer zum Umstieg?


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Motiviert das neue MacBook Neo tatsächlich Menschen, die bislang einen PC genutzt haben, erstmals einen Mac zu kaufen? Ein X-Post von Apple-Chef Tim Cook scheint diese Vermutung zu bestätigen. Der Mac habe gerade seine beste Startwoche bei Erstkäufern erlebt, die es jemals gegeben hat, frohlockte Cook, ohne präzise das Modell zu benennen.

Weiterlesen nach der Anzeige

Da zusammen mit dem Neo das MacBook Air mit M5 und das MacBook Pro mit M5 Pro und M5 Max an den Start gingen, die beide Fortschreibungen der vorhandenen Modelle sind, dürfte hier vor allem das Neo den Ausschlag gegeben haben. Mit Preisen von 699 und 799 Euro für Speicher-Ausstattungen mit 256 bzw. 512 GByte unterbietet Apple mit dem Neo deutlich seinen bisherigen Startpreis für Macs. Das Gerät ist damit das günstigste MacBook, das Apple je verkauft hat. Das bunte MacBook Neo soll den Laptop-Markt aufwirbeln und richtet sich gezielt an preisbewusste Käufer.

Mit dem neuen Modell ist Apple in den Wettbewerb gegen günstige PC-Notebooks eingetreten und versucht dort, mit dem Einsatz eines Aluminiumgehäuses, dem A18-Pro-Chip und dem 13-Zoll-Liquid-Retina-Display die Standards für Geräte in dieser Preisklasse hochzusetzen. Laut Asus-Finanzchef Nick Wu schockt das preiswerte MacBook Neo den gesamten Markt und zwingt die Windows-Konkurrenz zu neuen Strategien. Natürlich gibt es allerlei Abstriche gegenüber Apples höherpreisigen MacBooks, die unter anderem bessere Anschlüsse, andere Bildschirmgrößen und -qualitäten und höhere Leistung bieten. Zudem zeigen erste Benchmarks, dass das MacBook Neo bei der SSD-Geschwindigkeit deutlich hinter den M5-Modellen zurückbleibt.

Trotzdem scheint das neue Modell bei der Zielgruppe zumindest zum Auftakt recht gut zu funktionieren. Bei Onlinebestellungen auf Apples Website sind die Lieferzeiten bereits auf Mitte April gerutscht. Der Name soll dabei laut Apple ein „frisches“ Gefühl vermitteln; warum das MacBook Neo so heißt, erklärte kürzlich eine Marketingdirektorin des Konzerns. Längere Wartezeiten sind für gewöhnlich ein Indiz, dass Apple der Nachfrage kaum nachkommt. Auch sollen Inzahlungnahmen alter Geräte in der Startwoche deutlich nach oben geschnellt sein, berichtet die Website MacRumors. Es sei gar der größte Anstieg der Mac-Inzahlungnahmen seit Veröffentlichung der Apple-Silicon-Macs zwischen 2020 und 2021 gewesen. Wer sich für das Gerät interessiert, sollte jedoch die technischen Nachteile des MacBook Neo genau prüfen, da Apple unter anderem beim Display-Farbraum und der Tastaturbeleuchtung gespart hat.

Lesen Sie auch


(mki)



Source link

Weiterlesen

Künstliche Intelligenz

Schutz vor digitaler Gewalt: Entwurf in den Startlöchern


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Gegen digitale Formen von Gewalt soll es künftig einen besseren Schutz geben. Der Gesetzentwurf sei „fast fertig“, erklärte ein Sprecher des zuständigen Bundesministeriums für Justiz und Verbraucherschutz, das sich regelmäßig mit Themen der Netzpolitik befasst, am Mittag in Berlin. Kern des Vorhabens seien zwei unterschiedliche Stränge: In einem strafrechtlichen Teil sollen unter anderem die Erstellung von Deepfake-Pornografie strafbewehrt und weitere Formen digitaler Gewaltausübung sanktioniert werden.

Weiterlesen nach der Anzeige

Damit soll auch eine vorbeugende Wirkung erreicht werden: „Wir wollen dafür sorgen, dass sich Täter nicht mehr sicher fühlen können“, sagte Bundesjustizministerin Stefanie Hubig (SPD) bereits am Morgen bei RTL/n-tv. „Wir dürfen nicht länger zusehen, wie Deepfakes als Waffe gegen Frauen eingesetzt werden“, fordert die familien- und frauenpolitische Sprecherin der CDU/CSU-Bundestagsfraktion Anne König (CDU). „Wer die Intimsphäre verletzt, muss die volle Härte des Gesetzes spüren.“

Über ein digitales Gewaltschutzgesetz beriet bereits 2023 die vorangegangene Bundesregierung, bislang jedoch kam kein konkreter Gesetzestext zustande. Ergänzend zu den Strafrechtsverschärfungen sollen in dem Entwurf nun auch die zivilrechtlichen Möglichkeiten für Betroffene gestärkt werden: So soll unter anderem der Auskunftsanspruch zu Nutzern gegenüber den Plattformen besser durchsetzbar werden, wenn es um Persönlichkeitsrechtsverletzungen geht. Da ein Firmenstrafrecht im deutschen Recht nicht vorgesehen ist, enthält auch der wohl kommende Vorschlag keine entsprechenden Normen, die etwa die Mithilfe bei Erstellung oder Verbreitung strafrechtlich sanktionieren würden. Bundesjustizministerin Stefanie Hubig unterstützt zudem die EU-Initiativen dazu, die sexualisierte Deepfake-Generierung europarechtlich zu unterbinden, indem Anbietern Vorgaben auferlegt werden. Bundeskanzler Friedrich Merz (CDU) unterstütze das Vorhaben, sagte der stellvertretende Regierungssprecher am Mittag in Berlin.

Während die Plattformregulierung als solche europarechtlich abschließend geregelt ist, blieb das Strafrecht stets Mitgliedstaatszuständigkeit. Der Digital Services Act verweist etwa auf die nationalen Straftatbestände, die in Deutschland bei bestimmten Deliktsformen aber bislang fehlten. Betroffene konnten bisher daher nur versuchen, auf dem zivilrechtlichen Weg ihre Rechte durchzusetzen, Inhalte entfernen zu lassen und von Tätern Entschädigungen einzufordern – ein aufwendiges Verfahren, das Opfern enorme Aufwände aufbürdet. Gegen Täter soll bei massiven Persönlichkeitsrechtsverletzungen auch die Möglichkeit geschaffen werden, deren Account bei Plattformen zwangsweise sperren zu lassen. Insbesondere bei reichweitenstarken Profilen würde das abschreckende Wirkung haben können, so die Hoffnung im Justizministerium.

Aktuell wird über die Folgen und Täterschaft digitaler Gewalt aufgrund erhobener Vorwürfe von der Schauspielerin Collien Fernandes gegenüber ihrem Ex-Ehemann Christian Ulmen diskutiert. In Spanien, wo Fernandes nun Strafanzeige gestellt hat, ist die strafrechtliche Gesetzgebung zu digitalen Gewaltausübungsformen sehr viel umfassender als in Deutschland. Ein besserer Schutz vor analoger Gewalt wird derzeit ebenfalls noch in den Institutionen beraten und schließt unter anderem die elektronische Fußfessel als Möglichkeit zur Überwachung von Annäherungsverboten ein.

Lesen Sie auch


(mki)



Source link

Weiterlesen

Künstliche Intelligenz

Googles KI-Zusammenfassungen: Opt-out für britische Medienhäuser angekündigt


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Googles KI-Zusammenfassungen sorgen für großen Unmut bei Betreibern von Nachrichtenseiten. Weltweit gibt es Initiativen dagegen, in Großbritannien jetzt eventuell mit einem ersten Erfolg: Google will den Betroffenen einen Opt-out ermöglichen, wie das Unternehmen jetzt in einer Antwort an die britische Wettbewerbsbehörde Competition and Markets Authoritiy (CMA) ankündigte. Details und einen Zeitplan bleibt Google aber schuldig.

Weiterlesen nach der Anzeige

Seit rund einem Jahr gibt es sie auch in Deutschland: Kleine Texte mit Zusammenfassungen der Suchergebnisse, die in den Google-Suchergebnissen an oberster Stelle auftauchen und das wiedergeben, was Nutzer eigentlich erst beim Besuch der gefundenen Webseiten gelesen hätten. Das stellt gerade journalistische Online-Medien, die von den Aufrufen ihrer Inhalte leben, vor große Herausforderungen; etwa den erheblichen Rückgang der Seitenaufrufe.

Die Bredouille für die Verlage: Googles Crawler lassen sich nur ganz oder gar nicht aussperren. Wer nicht will, dass Google KI-Zusammenfassungen seiner Inhalte erstellt, der kann das Crawling seiner Seiten nur vollständig verbieten – und wäre dann auch nicht mehr in den Google-Suchergebnissen oder bei Google Discover zu finden.

In Großbritannien rief das die CMA und den Verlegerverband Publisher‘s Association auf den Plan. 2025 brachte das Google zunächst den „Strategic Market Status“ (SMS) ein, womit die CMA Google als Unternehmen von besonders großer Marktmacht einstuft. Damit kann die Behörde weitreichende Vorgaben machen; etwa wie Google seine Suchmaschinenrankings auf dem britischen Markt zu gestalten hat.

Im Januar machte die CMA erste Vorschläge, wie Google die Marktbedingungen verbessern könnte. Sie sprach sich für mehr Wahlmöglichkeiten und Transparenz für Verlage bei KI-Zusammenfassungen, fairere und transparentere Rankings in den Suchergebnissen mit der Möglichkeit, Probleme an Google zu melden, und gesetzlich vorgeschriebene Auswahlbildschirme für die Standardsuchmaschine auf Android-Geräten und im Google-Chrome-Browser aus. Außerdem soll die Nutzung von Datenauswertungen von Google-Suchtrends deutlich einfacher werden. Allerdings müssen die Vorschläge erst noch im Rahmen des Digital Markets Regime abgestimmt werden – einem gesetzlichen Rahmenwerk zur Regulation digitaler Märkte in Großbritannien, etwa für App-Stores, soziale Medien oder E-Commerce-Plattformen.

Weiterlesen nach der Anzeige

Der Publisher’s Association gingen diese Vorschläge noch nicht weit genug. Sie fordert, dass Google eine klare Trennung zwischen KI-Crawlern und Crawlern für die Google-Suche vornimmt. Am Mittwoch veröffentlichte Google nun eine Stellungnahme zu den CMA-Vorschlägen. Zum Opt-out für KI-Zusammenfassungen heißt es hier nur: „Wir arbeiten an weiteren Aktualisierungen unserer Kontrollmöglichkeiten, damit Websites generative KI-Funktionen in der Suche gezielt deaktivieren können.“

Auch zur Forderung nach faireren und transparenteren Rankings und Auswahlbildschirmen zur Standardsuchmaschine äußerte sich Google: „Wir gewähren unseren eigenen Produkten keine Vorzugsbehandlung, was auch durch die eigenen Überprüfungen der CMA bestätigt wird“, betonte der Suchmaschinen-Riese.

Vorschläge von Drittanbietern könnten Googles Systeme und damit auch die Nutzer Manipulationen und Missbrauch aussetzen. Hierfür gibt es aber keine Belege. Es würde laut Google die Bekämpfung von Spam erschweren und letztendlich die Fähigkeit beeinträchtigen, Verbesserungen für Nutzer in Großbritannien einzuführen. In der Vergangenheit hatte Google zum Beispiel in den USA kartellrechtliche Schwierigkeiten, da der Vorwurf lautete, Google würde seine Marktmacht ausnutzen, um seine eigenen Werbeprodukte zu überhöhten Preisen zu vermarkten.

Eine interessante Alternative schlug Google zu den Auswahlbildschirmen zur Standardsuchmaschine vor. Zunächst verwies das Unternehmen auf einen entsprechenden Auswahlbildschirm, der in Großbritannien bereits bei der Ersteinrichtung von Android-Geräten auftaucht.

Android-Nutzer können ihre bevorzugten Dienste ganz einfach auswählen, und in Großbritannien werden bei der Einrichtung neuer Android-Geräte sogar Auswahlbildschirme angezeigt. Der Vorschlag der CMA, jedes Jahr aufs Neue per Pop-up-Fenster nach der bevorzugten Suchmaschine zu fragen, würde Nutzer in Googles Augen zu sehr stören. Stattdessen plädiert das Unternehmen für einen permanenten Schalter in den Geräteeinstellungen, um die Standardsuchmaschine jederzeit zu ändern.

Es ist ein erster Schritt, den Google in Großbritannien in Richtung CMA und Verleger macht. Doch bis wirklich beschlossen ist, welche Maßnahmen Google umsetzen muss, wird es voraussichtlich noch längere Zeit dauern.


(nen)



Source link

Weiterlesen

Beliebt