DE112018004660T5 - Verwenden von kommentaren zum bereitstellen von optimierungen - Google Patents

Verwenden von kommentaren zum bereitstellen von optimierungen Download PDF

Info

Publication number
DE112018004660T5
DE112018004660T5 DE112018004660.5T DE112018004660T DE112018004660T5 DE 112018004660 T5 DE112018004660 T5 DE 112018004660T5 DE 112018004660 T DE112018004660 T DE 112018004660T DE 112018004660 T5 DE112018004660 T5 DE 112018004660T5
Authority
DE
Germany
Prior art keywords
comments
computer
code
encoded
compiler
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112018004660.5T
Other languages
English (en)
Inventor
Archana Ravindar
Ulrich Weigand
Srinivas Vaidya
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018004660T5 publication Critical patent/DE112018004660T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

Eine Übersetzungskomponente wie zum Beispiel ein Compiler erkennt Kommentare eines Programms und verwendet diese Kommentare, um Optimierungsempfehlungen bereitzustellen oder optimierten Code zu erzeugen, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu verbessern. Die Kommentare werden in Strukturen übersetzt, die durch Übersetzungsphasen erkennbar sind, um effizienteren Code oder effizientere Pragmas zu erzeugen, um die Leistung zu verbessern.

Description

  • HINTERGRUND
  • Ein oder mehrere Aspekte betreffen allgemein eine Verarbeitung innerhalb einer Datenverarbeitungsumgebung und insbesondere eine Erleichterung einer derartigen Verarbeitung.
  • Die Verarbeitung innerhalb einer Datenverarbeitungsumgebung beinhaltet das Ausführen von Computerprogrammen. Ein Computerprogramm weist einen Computer an, Aufgaben durchzuführen. Es wurde durch einen Programmierer unter Verwendung einer für Menschen lesbaren Programmiersprache geschrieben, um Quellcode zu erzeugen. Quellcode ist eine Sammlung von Computereinweisungen und kann Kommentare beinhalten, die die Computeranweisungen und/oder andere Aspekte des Computerprogramms beschreiben. Der für Menschen lesbare Quellcode wird unter Verwendung zum Beispiel eines Compilers in einen durch Maschinen lesbaren Code übersetzt.
  • Der Compiler wandelt den Quellcode in Objektcode oder Maschinencode um, der für den Computer verständlich ist. Beim Umwandeln des Quellcodes ignoriert der Compiler die Kommentare, die im Quellcode vorliegen können.
  • KURZDARSTELLUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung werden ausgewählte Kommentare nicht ignoriert, sondern stattdessen zum Beispiel beim Kompilieren eines Programms berücksichtigt. Die ausgewählten Kommentare beinhalten Informationen, die beim Bereitstellen von Empfehlungen nützlich sein können, um das Programm und/oder eine andere Verarbeitung zu verbessern und/oder verbesserten Programmcode zu erzeugen.
  • Mängel des Stands der Technik werden überwunden und weitere Vorteile bereitgestellt, indem ein Computerprogrammprodukt zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung bereitgestellt wird. Das Computerprogrammprodukt beinhaltet ein durch einen Computer lesbares Speichermedium, das durch eine Verarbeitungsschaltung gelesen werden kann, sowie Speicherungsanweisungen, um ein Verfahren durchzuführen. Das Verfahren beinhaltet zum Beispiel durch eine Übersetzungskomponente eines Prozessors der Datenverarbeitungsumgebung das Erhalten eines oder mehrerer codierter Kommentare, die durch die Übersetzungskomponente beim Bereitstellen einer oder mehrerer Optimierungen verwendet werden sollen, um die Verarbeitung innerhalb der Datenverarbeitungsumgebung zu optimieren. Der eine oder die mehreren codierten Kommentare beinhalten einen oder mehrere Kommentare eines Computerprogramms, von denen festgestellt wurde, dass sie Informationen enthalten, die der Übersetzungskomponente bereitgestellt und codiert werden sollen, um den einen oder die mehreren codierten Kommentare bereitzustellen. Die Übersetzungskomponente verwendet den einen oder die mehreren codierten Kommentare, um die Verarbeitung innerhalb der Datenverarbeitungsumgebung zu optimieren. Durch Verwenden der codierten Kommentare zum Optimieren der Verarbeitung wird die Leistung verbessert.
  • Beispielsweise beinhaltet das Verwenden des einen oder der mehreren codierten Kommentare zum Optimieren der Verarbeitung das Verwenden des einen oder der mehreren codierten Kommentare beim Übersetzen von Code des Computerprogramms in einen durch Maschinen lesbaren Code. Der durch Maschinen lesbare Code beinhaltet eine oder mehrere Codeoptimierungen auf der Grundlage des einen oder der mehreren codierten Kommentare. Die Codeoptimierungen verbessern den Code, wodurch ferner die Verarbeitung innerhalb der Datenverarbeitungsumgebung verbessert wird.
  • Weiterhin beispielhaft beinhaltet das Verwenden des einen oder der mehreren codierten Kommentare zum Optimieren der Verarbeitung das Verwenden des einen oder der mehreren codierten Kommentare, um einen Bericht zu erzeugen, der eine oder mehrere Änderungen angibt, die an dem Computerprogramm vorzunehmen sind, um die Verarbeitung zu optimieren. Durch Erzeugen des Berichts kann das Computerprogramm geändert werden, wodurch der Code und daher die Verarbeitung innerhalb der Datenverarbeitungsumgebung verbessert werden.
  • Bei einer Ausführungsform wird auf der Grundlage des Erhaltens des einen oder der mehreren codierten Kommentare eine Struktur aufgebaut. Die Struktur beinhaltet eine Mehrzahl von Knoten, und die Mehrzahl von Knoten beinhaltet einen oder mehrere Knoten für eine oder mehrere Programmkomponenten des Computerprogramms und einen oder mehrere Knoten für einen oder mehrere codierte Kommentare. Dies erleichtert das Einbeziehen bestimmter Optimierungen beim Kompilieren des Codes.
  • Beispielsweise beinhaltet das Erhalten des einen oder der mehreren codierten Kommentare das Erhalten des einen oder der mehreren codierten Kommentare von einer Vorverarbeitungskomponente des Prozessors. Die Vorverarbeitungskomponente ermittelt den einen oder die mehreren Kommentare des Computerprogramms, die zur Verwendung durch die Übersetzungskomponente beibehalten werden sollen, und codiert den einen oder die mehreren Kommentare, um den einen oder die mehreren codierten Kommentare bereitzustellen.
  • Das Ermitteln des einen oder der mehreren beizubehaltenden Kommentare beinhaltet zum Beispiel das Feststellen, dass ein oder mehrere Kommentare einen Vertrauensschwellenwert erfüllen, der angibt, dass der eine oder die mehreren Kommentare voraussichtlich Informationen enthalten, die beim Optimieren der Verarbeitung nützlich sind.
  • Das Codieren beinhaltet zum Beispiel bei einem Kommentar des einen oder der mehreren Kommentare das Bereitstellen eines Optimierungscodes und eines oder mehrerer Parameter für den Kommentar, um einen codierten Kommentar bereitzustellen.
  • Beispielsweise ist die Vorverarbeitungskomponente Teil einer Übersetzungskomponente oder davon getrennt, aber mit der Übersetzungskomponente verbunden.
  • Außerdem werden hierin mit Hilfe von Computern realisierte Verfahren und Systeme beansprucht, die einen oder mehrere Aspekte betreffen. Ferner werden hierin Dienste beschrieben und unter Umständen beansprucht, die einen oder mehrere Aspekte betreffen.
  • Weitere Merkmale und Vorteile werden durch die hierin beschriebenen Techniken realisiert. Andere Ausführungsformen und Aspekte werden hierin eingehend beschrieben und als Teil der beanspruchten Aspekte betrachtet.
  • Figurenliste
  • Ein oder mehrere Aspekte werden in den Ansprüchen, die im Anschluss an die Beschreibung folgen, besonders hervorgehoben und ausdrücklich beansprucht. Das Vorstehende und Aufgaben, Merkmale und Vorteile eines oder mehrerer Aspekte werden anhand der folgenden eingehenden Beschreibung deutlich, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist, wobei:
    • 1 ein Beispiel einer Datenverarbeitungsumgebung darstellt, in der ein oder mehrere Aspekte der vorliegenden Erfindung enthalten sind und verwendet werden;
    • 2 ein Beispiel verschiedener Phasen eines Compilers darstellt, der gemäß einem Aspekt der vorliegenden Erfindung verwendet wird;
    • 3A ein Beispiel von Vorverarbeitungsphasen darstellt, die gemäß einem Aspekt der vorliegenden Erfindung durchgeführt werden;
    • 3B ein Beispiel von Kompilierungsphasen darstellt, die gemäß einem Aspekt der vorliegenden Erfindung verwendet werden;
    • die 4A bis 4B eine Ausführungsform des Erleichterns der Verarbeitung innerhalb einer Datenverarbeitungsumgebung gemäß einem Aspekt der vorliegenden Erfindung darstellen;
    • 5A ein weiteres Beispiel einer Datenverarbeitungsumgebung darstellt, in der ein oder mehrere Aspekte der vorliegenden Erfindung enthalten sind und verwendet werden;
    • 5B weitere Einzelheiten des Speichers aus 5A darstellt;
    • 6 eine Ausführungsform einer Cloud-Computing-Umgebung darstellt; und
    • 7 ein Beispiel von Abstraktionsmodellschichten darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung wird eine Fähigkeit bereitgestellt, eine Übersetzungskomponente anzuweisen, ausgewählte Programmkommentare im Quellcode zu erkennen und sie nicht zu ignorieren. Bei den Ausführungen hierin handelt es sich bei der Übersetzungskomponente um einen Compiler; bei anderen Ausführungsformen kann es sich um einen Interpreter oder eine andere Komponente handeln, die einen durch Maschinen lesbaren Code bereitstellt.
  • Programmkommentare dienen bekanntlich als Dokumentationshilfe. Gemäß einem Aspekt der vorliegenden Erfindung wurde jedoch beobachtet, dass Programmkommentare nützliche Informationen über Funktionen, Schleifen, Verzweigungsbedingungen, Anmerkungen und/andere Aspekte des Programms bereitstellen können, die nicht durch Profiler oder andere Leistungsanalysetools festgestellt werden können. Diese Informationen bleiben jedoch einfach im Programm und werden nicht genutzt, da Compiler während des Kompilierprozesses Kommentare nicht als aktive Einheit behandeln. Sie werden als Leerzeichen behandelt und außerhalb der Phase der lexikalischen Analyse der Kompilierung nicht berücksichtigt.
  • Daher wird gemäß einem Aspekt der vorliegenden Erfindung eine Fähigkeit bereitgestellt, um Kommentare zu erkennen, die durch den Compiler verwendet werden können, und sie wie andere Komponenten des Programms zu behandeln. Bei einem Beispiel wird ein modifizierter Compiler bereitgestellt, der diese Kommentare in Strukturen übersetzt, die durch Compiler-Phasen erkennbar sind, sodass der Compiler effizienteren Code erzeugen kann. Die Fähigkeit beinhaltet außerdem das Übersetzen von Kommentaren in Compiler-Merker oder -Pragmas (ein Pragma ist eine Compiler-Anweisung; in den Quellcode eingebettete Daten, die dem Compiler eine Absicht anzeigen), die verwendet werden können, um die Leistungsfähigkeit des Programms zu verbessern, wo immer dies möglich ist. Diese Fähigkeit unterstützt unter Umständen Techniken zum Auffinden (Mining) von Merkern, die erhebliche Ressourcen verbrauchen, um den besten Satz von Merkern zum Kompilieren eines bestimmten Programms zu ermitteln.
  • Durch das Bereitstellen von effizientem Code wird die Verarbeitung in einem Computer erleichtert und verbessert. Durch den effizienten Code bereitgestellte Optimierungen verbessern die Verarbeitung innerhalb einer Datenverarbeitungsumgebung.
  • Verschiedene Aspekte sind hierin beschrieben. Ferner sind viele Variationen möglich, ohne vom Ideengehalt von Aspekten der vorliegenden Erfindung abzuweichen. Es sollte beachtet werden, dass jeder Aspekt oder jedes Merkmal, die hierin beschrieben sind, und Varianten davon mit einem beliebigen anderen Aspekt oder Merkmal kombinierbar ist, sofern diese nicht unvereinbar miteinander sind.
  • Eine Ausführungsform einer Datenverarbeitungsumgebung, bei der eine oder mehrere Aspekte der vorliegenden Erfindung einbezogen und verwendet werden, wird unter Bezug auf 1 beschrieben. Bei einem Beispiel beruht die Datenverarbeitungsumgebung auf der von International Business Machines Corporation, Armonk, New York, angebotenen z/Architecture. Eine Ausführungsform der z/Architecture ist in der IBM-Publikation „z/Architecture Principles of Operation“, Nr. SA22-7832-10, März 2015, beschrieben. Z/ARCHITECTURE ist eine eingetragene Marke von International Business Machines Corporation, Armonk, New York, USA.
  • Bei einem weiteren Beispiel beruht die Datenverarbeitungsumgebung auf der von International Business Machines Corporation, Armonk, New York, angebotenen Power Architecture. Eine Ausführungsform der Power Architecture ist in „Power ISA™ Version 2.07B“, International Business Machines Corporation, 9. April 2015, beschrieben. POWER ARCHITECTURE ist eine eingetragene Marke von International Business Machines Corporation, Armonk, New York, USA.
  • Die Datenverarbeitungsumgebung kann auch auf anderen Architekturen beruhen einschließlich und ohne darauf beschränkt zu sein, der Intel-x86-Architekturen. Es existieren noch weitere Beispiele.
  • Wie in 1 gezeigt beinhaltet eine Datenverarbeitungsumgebung 100 zum Beispiel ein Computersystem 102, das z.B. in Form einer Mehrzweckdatenverarbeitungseinheit gezeigt ist. Das Computersystem 102 kann, ohne darauf beschränkt zu sein, einen oder mehrere Prozessoren oder Verarbeitungseinheit 104 (z.B. Zentraleinheiten (CPUs)), einen Speicher 106 (beispielsweise auch als Systemarbeitsspeicher, Hauptarbeitsspeicher, Hauptspeicher, zentraler Speicher oder Speicher bezeichnet) und eine oder mehrere Eingangs-/Ausgangsschnittstellen (E/A-Schnittstellen) 108 beinhalten, die untereinander über einen oder mehrere Busse und/oder andere Verbindungen 110 verbunden sind.
  • Der Bus 110 stellt eine oder mehrere beliebiger verschiedener Arten von Busstrukturen dar, zu denen ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port und ein Prozessorbus oder lokaler Bus gehören, die eine beliebige einer Vielfalt von Busarchitekturen nutzen. Als Beispiel und nicht als Einschränkung gedacht gehören zu derartigen Architekturen der ISA-Bus (ISA = Industry Standard Architecture), der MCA-Bus (MCA = Micro Channel Architecture), der lokale EISA-Bus (EISA = Enhanced ISA), der lokale VESA-Bus (VESA = Video Electronics Standards Association) und der PCI-Bus (PCI = Peripheral Component Interconnect).
  • Der Speicher 106 kann zum Beispiel einen Cache 120 wie z.B. einen gemeinsam genutzten Cache beinhalten, der mit lokalen Caches 122 von Prozessoren 104 verbunden sein kann. Ferner kann der Speicher 106 ein oder mehrere Programme oder eine oder mehrere Anwendungen 130, einen Compiler 131, ein Betriebssystem 132 und eine oder mehrere durch einen Computer lesbare Programmanweisungen 134 beinhalten. Die durch einen Computer lesbaren Programmanweisungen 134 können so konfiguriert sein, dass Funktionen von Ausführungsformen von Aspekten der Erfindung ausgeführt werden. Zu beispielhaften Compilern gehören XL (z.B. XL C, XL C++, die von International Business Machines Corporation angeboten werden), GCC (GNU Compiler Collection) und LLVM. Andere Compiler sind ebenfalls möglich.
  • Das Computersystem 102 kann außerdem über z.B. E/A-Schnittstellen 108 mit einer oder mehreren externen Einheiten 140, einer oder mehreren Netzwerkschnittstellen 142 und/oder einer oder mehreren Datenspeichereinheiten 144 Daten austauschen. Zu beispielhaften externen Einheiten gehören ein Benutzer Endgerät, ein Bandlaufwerk, eine Zeigeeinheit, eine Anzeige usw. Die Netzwerkschnittstelle 142 ermöglicht dem Computersystem 102, Daten mit einem oder mehreren Netzwerken auszutauschen, zum Beispiel mit einem lokalen Netzwerk (Local Area Network, LAN), einem allgemeinen Weitbereichsnetzwerk (Wide Area Network, WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet) auszutauschen, die einen Datenaustausch mit anderen Datenverarbeitungseinheiten oder -systemen bereitstellen.
  • Auf der Datenspeichereinheit 144 können ein oder mehrere Programme 146, eine oder mehrere durch einen Computer lesbare Programmanweisungen 148 und/oder Daten usw. gespeichert sein. Die durch einen Computer lesbaren Programmanweisungen können so konfiguriert sein, dass Funktionen von Ausführungsformen von Aspekten der Erfindung ausgeführt werden.
  • Das Computersystem 102 kann wechselbare/nicht wechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien beinhalten oder mit diesem verbunden sein. Zum Beispiel kann es ein nicht wechselbares, nichtflüchtiges Magnetmedium (in der Regel als „Festplatte“ bezeichnet), ein Magnetplattenlaufwerk zum Lesen von einer und Schreiben auf eine auswechselbare nichtflüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk zum Lesen von einer oder Schreiben auf eine wechselbare nichtflüchtige optische Platte wie zum Beispiel ein CD-ROM, DVD-ROM oder ein anderes optisches Medium beinhalten oder mit diesen verbunden sein. Es sollte klar sein, dass andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem 102 verwendet werden könnten. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Festplatten-Anordnungen, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.
  • Das Computersystem 102 kann in Verbindung mit zahlreichen anderen Mehrzweck- oder Spezial-Datenverarbeitungssystemumgebungen oder derartigen Konfigurationen betriebsfähig sein. Zu Beispielen allgemein bekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung in Verbindung mit dem Computersystem 102 geeignet sind, gehören, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme (PC-Systeme), Server-Computersysteme, Thin-Clients, Thick-Clients, Hand- oder Notebook-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Einheiten der Konsumgüterelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, zu denen beliebige der oben erwähnten Systeme oder Einheiten gehören, und dergleichen.
  • Wie oben beschrieben wird ein Compiler wie z.B. der Compiler 131 verwendet, um Quellcode in durch eine Maschine lesbaren Code umzuwandeln. Um den Quellcode umzuwandeln, verwendet der Compiler eine Mehrzahl von Phasen eines Kompilierungsprozesses. Ein Beispiel verschiedener Kompilierungsphasen wird unter Bezugnahme auf 2 beschrieben.
  • Wie in 2 dargestellt, empfängt der Compiler 131 als Eingabe einen Quellcode 200. Zum Beispiel wird der Quellcode 200 in einen lexikalischen Analysator 202 des Compilers 131 eingegeben. Der lexikalische Analysator 202 zerlegt den Quellcode 200 in eine Abfolge von Token 210. Die Token 210 werden in einen syntaktischen Analysator 212 des Compilers 131 eingegeben, der die Token-Abfolge syntaktisch analysiert, um die syntaktische Struktur des Programms zu erkennen, und erzeugt einen syntaktisch analysierten (geparsten) Code 220. Zum Beispiel kann er einen Syntaxanalysebaum aufbauen (der hierin auch als „Syntaxbaum“ bezeichnet wird), der die nicht lineare Abfolge von Token durch eine Baumstruktur ersetzt. Der syntaktisch analysierte Code 220 des syntaktischen Analysators wird in einen semantischen Analysator 222 eingegeben, der semantische Informationen zum Syntaxanalysebaum hinzufügt und eine Symboltabelle aufbaut. Er führt semantische Prüfungen, Binden von Objekten und/oder Zuweisung von Variablen durch.
  • Die Ausgabe des semantischen Analysators 222 ist ein qualifizierter Code 230, der in einen Codegenerator 232 eingegeben wird, der einen Zwischencode 240 erzeugt. Der Zwischencode 240 kann in einen Optimierer 242 des Compilers 131 eingegeben werden, der Objektcode 250 erzeugt, der ausgeführt werden soll.
  • Die oben genannten Phasen des Compilers 131 bilden lediglich ein Beispiel. Der Compiler kann mehr, weniger und/oder andere Phasen beinhalten. Ferner können eine oder mehrere der Phasen in einer abweichenden Reihenfolge durchgeführt werden. Zum Beispiel kann die Optimierung vor und/oder nach der Codeerzeugung durchgeführt werden. Andere Variationen sind möglich.
  • Gemäß einem Aspekt der vorliegenden Erfindung ist der Compiler modifiziert, um Kommentare eines Programms zu erkennen und zu verwenden, um optimierten Code und/oder andere Optimierungen innerhalb der Umgebung bereitzustellen. Um dies zu erleichtern, wird bei einem Aspekt vor den anderen Kompilierungsphasen eine Vorverarbeitungsphase durchgeführt, die Kommentare eines Programms klassifiziert, die in natürlicher Sprache geschrieben sind (d.h. nicht in Maschinensprache, sondern in Englisch oder einer anderen Sprache), und eine Codierung ausgewählter Kommentare zum Beispiel an den lexikalischen Analysator 202 weitergibt, wie hierin beschrieben.
  • Da Kommentare in natürlicher Sprache geschrieben sind, wird eine Technik des maschinellen Lernens wie z.B. eine Technik des überwachten Klassifizierens in mehrere Klassen verwendet, um Kommentare in zwei Kategorien zu klassifizieren: eine Kategorie, die Kommentare beinhaltet die nützliche Informationen über das Programm bereitstellen, die dazu beitragen können, dass der Compiler das Programm weiter optimiert, und eine weitere Kategorie, die Kommentare beinhaltet, die nicht zu Gelegenheiten zur Verbesserung der Anwendung führen werden. Die Nützlichkeit der Kommentare wird auf der Grundlage eines vorgegebenen Schwellenwerts ermittelt. Die Kommentare in der einen Kategorie werden beibehalten, und die Kommentare in der anderen Kategorie werden verworfen.
  • Die beibehaltenen Kommentare bilden einen Teil des Programms und gelangen über die Kompilierungsphasen bis zum Syntax- bzw. Syntaxanalysebaum. Nützliche Informationen aus Kommentaren werden über semantische Attribute der Knoten weitergegeben, die verwendet werden, um dem Benutzer Empfehlungen in Bezug auf Merker oder Pragmas zu geben, die verwendet werden können, um die Leistung zu verbessern oder optimalen zwischen Code bereitzustellen und somit den durch den Compiler erstellten Binärcode zu beeinflussen. Diese Technik kann außerdem verwendet werden, um ein Hot-Path-Verhalten aus Kommentaren abzuleiten und an den Compiler weiterzugeben. Dies ist in Fällen wertvoll, in denen Kunden keinen Zugang zu Trainingseingaben haben oder es als schwierig empfinden, Trainingseingaben zusammenzustellen, die nur in Standard-Leistungsanalysepaketen wie z.B. SPEC-Programmen verfügbar sind.
  • Zur näheren Erläuterung werden in natürlicher Sprache geschriebene Programmkommentare verarbeitet und als Auslöser für Compiler-Optimierungen und als Empfehlungen für den Benutzer in Bezug auf Compiler-Merker/-Pragmas/-Vorschläge für eine Protokolldatei verwendet. Dies wird erreicht, indem den Kompilierungsphasen eine Präprozessorphase vorangestellt wird, die die in einer natürlichen Sprache geschriebenen Kommentare unter Verwendung einer Technik des überwachten Klassifizierens in mehrere Klassen klassifiziert. Die Vorverarbeitung kann als Teil des Compilers oder davon getrennt durchgeführt werden, wobei die Ergebnisse der Vorverarbeitung dann an den Compiler weitergegeben werden.
  • Bei einem Beispiel werden Kommentare in zwei Kategorien klassifiziert - in eine, die dem Compiler nützliche Informationen bereitstellen kann, um den Code zu optimieren, und in die andere, die nur zu Dokumentationszwecken nützlich ist. Die Kommentare, die dem Compiler nützliche Informationen bereitstellen, werden codiert und im Programm behalten. Der Compiler verarbeitet diese Kommentare und übersetzt sie in Optimierungen oder in Empfehlungen für den Benutzer. Die Phasen des Compilers erkennen derartige spezielle Kommentare und analysieren sie syntaktisch, sodass sie in den Syntaxbaum oder Syntaxanalysebaum eingebettet werden können. Den Knoten des Syntaxanalysebaums sind Attribute zugeordnet, und die Kommentarknoten geben die Informationen weiter, die die Optimierung in Bezug auf Attribute beeinflussen können. Die Attributinformationen werden aus den Kommentarknoten durch die Phase der Zwischencodeerzeugung des Compilers ausgewählt, die diese Informationen zusammen mit Kontextinformationen verarbeitet. Ferner erzeugt sie Empfehlungen/löst die Erzeugung von optimalem Code aus, was zu verbesserter Leistung führt.
  • Unter Bezugnahme auf 3A beinhaltet beispielsweise eine Vorverarbeitungsphase 300 eine Mehrzahl von Phasen wie z.B. eine Trainingsphase 302, eine Vorhersagephase 320, eine Beibehaltungsphase 330 und eine Codierphase 340. Bei einem bestimmten Beispiel sind die Trainingsphase 302 und die Vorhersagephase 320 Teil einer Technik des überwachten Klassifizierens in mehrere Klassen.
  • Bei einem bestimmten Beispiel liegt ein endlicher Satz (Größe N) von Compiler-Optimierungen vor. Jede Optimierung wird als Klasse im Kontext der Technik des Klassifizierens in mehrere Klassen behandelt, und jede Optimierung ist einem OPTIMIERUNGSCODE zugeordnet. Dieser OPTIMIERUNGSCODE kann (a) eine Empfehlung für einen Programmierer in Form von Compiler-Merkern, -Pragmas zuordnen; und/oder (b) semantische Aktionen zuordnen, die die Erzeugung von Zwischencode beeinflussen. Zu beispielhaften Optimierungscodes gehören:
    OPTIMIERUNGSCODE OPTIMIERUNGSBESCHREIBUNG
    NNNN-digit-code Beschreibung
    4123 Verzweigungsoptimierung im Falle einer Schaltanweisung
    2314 Begünstigung indirekter Aufrufe
    .... ....
  • Während der Trainingsphase 302 werden Trainingsdaten 304 in einen Merkmalextraktor 306 eingegeben, der Merkmale 308 extrahiert, die in einen Mehrklassen-Klassifikator 310 eingegeben werden. Beispielsweise wird durch einen oder mehrere Programmierer ein Trainingsdatensatz 304 erstellt, der Beispiele von Kommentaren und zugehörige Optimierungscode beinhaltet. Bei einem Beispiel ist der Trainingsdatensatz eine Sammlung von Tupeln, und jedes Tupel 314 hat die Form [Kommentar: OPTIMIERUNGSCODE]. Diese beispielhaften Kommentare werden in Klassen klassifiziert, die in den Mehrklassen-Klassifikator eingegeben werden. Der Mehrklassen-Klassifikator ist so trainiert, dass er ein Trainingsmodell aufbaut. Er klassifiziert die Kommentare in Klassen und ordnet die Kommentare Compiler-Optimierungen oder Empfehlungen zu.
  • Ein Beispiel eines Trainingssatzes für z.B. eine Verzweigungsoptimierung für eine Schaltfall-Anweisung beinhaltet:
           Void func () {
             State=Prereq() ;
             Switch (State) {

              case ‚a‘: // This case is most often taken 

                           Val=x+y-z;
                           Break;
              case ‚b‘: Val=x*10;
                           Break;
               Default: ......
             }
           }
           Der Trainingssatz beinhaltet beispielsweise:
           [This case is most often taken, 4123]
           [This case is in hot path, 4123]
           [This switch case is frequently executed, 4123]
           [Over 80% this switch case is executed, 4123]
           ...
  • Aus jedem Tupel 314 wird ein Merkmalvektor 316 extrahiert, der zum Aufbauen eines Modells verwendet wird, wobei der Klassifikator aus den Trainingsdaten lernt. Beispielsweise wird jeder Kommentar des Tupels 314 einem Merkmalextraktor 306 zugeführt, der Merkmale 308 aus Kommentaren extrahiert. Merkmale werden extrahiert, indem Kommentare in Wörter aufgeschlüsselt werden. Wörter eines Merkmalvektors werden herausgefiltert, anderenfalls führt dies zu einer Zunahme der Dimension des Vektors.
  • Ein Beispiel von Merkmalwörtern, die aus Kommentaren extrahiert wurden, beinhaltet:
    KOMMENTARE MERKMALWÖRTER
    This case is most often taken ‚case‘ ‚most‘ ‚often‘ ‚taken‘
    This case is in hot path ‚case‘ ‚in‘ ‚hot‘ ‚path‘
    This switch case is frequently executed ‚frequently‘ ‚executed‘
    Over 80% this switch case is execute ‚over‘ ‚80%‘ ‚case‘ ‚executed‘
  • Beim Merkmalvektor 316 handelt es sich um eine Kombination aus jedem dieser Merkmalwörter. Das Vorliegen/Fehlen von Merkmalwörtern in Kommentaren bildet den Merkmalvektor, wobei die Merkmalvektoren in einem Bitmap codiert werden. Jeder Kommentar ist mit einem OPTIMIERUNGSCODE bezeichnet (der auf eine Compiler-Optimierung zeigt).
  • Die Kommentare können eine Kennung beinhalten, z.B. Klassenname, Variable, Funktion usw., die zum Auslösen der Optimierung verwendet werden können, und daher wird diese beibehalten und als Parameter zusammen mit dem OPTIMIERUNGSCODE bzw. dem OPTCODE weitergegeben.
  • Dieser Merkmalvektor 316 wird in einen Mehrklassen-Klassifikator 310 eingegeben, der Techniken wie z.B. Naïve Bayes, neuronale Netze und SVM (Support Vector Machines) verwendet, um ein Modell aufzubauen. Der Mehrklassen-Klassifikator verwendet die Trainingseingabe, um dieses Modell zu trainieren, das hierin als „trainiertes Klassifikatormodell“ bezeichnet wird. Das trainierte Modell kann anschließend die unterschiedlichen Typen von Kommentaren verstehen und sie in unterschiedliche Arten klassifizieren, zu denen sie gehören können.
  • Bei einer Ausführungsform ist die Trainingsphase ein einmaliger Vorgang. Sobald das Modell erstellt ist, wird es später zur Vorhersage verwendet. Die Trainingsphase kann so ausgelegt sein, dass neuere Kommentare und Optimierungen berücksichtigt werden.
  • Während einer nächsten Phase, der Vorhersagephase 320, werden über einen Merkmalextraktor 324 bei jedem Kommentar 322 (oder bei ausgewählten Kommentaren) im Quellcode Merkmalwörter extrahiert und ein Merkmalvektor 326 erzeugt. Der Merkmalvektor 326 wird als Eingabe an ein trainiertes Klassifikatormodell 328 (das in der Trainingsphase 302 aufgebaut wurde) weitergegeben, das eine Punktbewertung/einen Vertrauenswert 320 je Klasse bereitstellt. Die Punktbewertungen/Vertrauenswerte werden durch das trainierte Klassifikatormodell bereitgestellt, das die zu den Kommentaren gehörenden Merkmalvektoren als Eingabe nimmt. Zum Beispiel werden ein im Quellcode enthaltener Kommentar in das trainierte Klassifikatormodell eingegeben, um eine Klasse zu ermitteln, die diesem Kommentar am besten entspricht, und ein Vertrauenswert bereitgestellt (z.B. ein bestimmter Vertrauensprozentsatz, der in diese Klasse passt).
  • Während der Beibehaltungsphase 330 werden die Kommentare beibehalten, deren Vertrauenswert größer als oder gleich einem definierten Schwellenwert (z.B. 80 %) ist. Falls ein Punktwert größer als oder gleich einem Vertrauensschwellenwert ist, ersetzt eine Codierung den Kommentar; wenn nicht, wird der Kommentar aus dem Programm entfernt und nicht zugelassen, dass er an nachfolgende Phasen weitergegeben wird. Andere Schwellenwerte und/oder andere Ermittlungen von Vertrauenswerten sind möglich (z.B. könnte der Vertrauenswert kleiner als ein Schwellenwert oder gleich diesem sein oder eine andere Beziehung beinhalten). Andere Möglichkeiten bestehen.
  • Die beibehaltenen Kommentare werden in einer Codierphase 340 codiert. Während der Codierphase werden die beibehaltenen Kommentare durch eine Codierung des Kommentars ersetzt. Bei einem Beispiel hat die Codierung die Form /* OPTCODE params */, wobei OPTCODE ein Optimierungscode ist (z.B. NNNN) und „params“ weitere Parameter sind, die durch nachfolgende Phasen des Compilers während der Erzeugung von Zwischencode verwendet werden können. Bei anderen Ausführungsformen sind die Parameter optional. Andere Variationen sind ebenfalls möglich.
  • Zum Beispiel:
  •            /* This function pointer most often calls _addFactor2(). */
               int sum = (*functionPtr) (2, 3);
               Wird übersetzt in:
               /* 2314_addFactor2 */
               int sum = (*functionPtr) (2, 3);
    wobei 2314 ein OPTIMIERUNGSCODE (OPTCODE) für eine Begünstigung indirekter Aufrufe mit dem Parameter „_addFactor2“ ist.
  • Bei aktuellen Compilern würden die Kommentare bleiben, wie sie sind; jedoch werden gemäß einem Aspekt der vorliegenden Erfindung nützliche Kommentare (z.B. die Kommentare, die Informationen über das Quellcodefragment in Bezug auf Werte seiner Variablen, Verzweigungsrichtung, Datengröße, Wichtigkeit usw. bereitstellen) durch eine codierte Version ersetzt und sind Teil des Programms. Die codierten beibehaltenen Kommentare werden an eine lexikalische Analysatorphase 350 weitergegeben, wie in 3B dargestellt. Während der lexikalischen Analysatorphase erkennt der lexikalische Analysator gemäß einem Aspekt der vorliegenden Erfindung Kommentare z.B. der Form /* OPTCODE params */. Auf der Grundlage des Erkennens dieser Kommentare durch den lexikalischen Analysator werden diese beibehalten. Andere Kommentare werden durch den lexikalischen Analysator aus dem Programm entfernt.
  • In einer nächsten Phase 360 wird durch den Compiler unter Verwendung von Token, die durch den mexikanischen Analysator syntaktisch analysiert wurden, ein Syntaxbaum oder Syntaxanalysebaum aufgebaut. Die Kommentare sind Knoten im Syntaxanalysebaum, zusammen mit den Programmkomponenten wie z.B. Anweisungen, Blöcken, Schleifenprozeduren usw.
  • Beispielsweise sind Kommentare gemäß einem Aspekt der vorliegenden Erfindung aktive Einheiten im Programm und definieren aus Informationen, die innerhalb von Kommentaren codiert sind, Attribute, die aus dem Mehrklassen-Klassifikator ausgegeben werden. Diese zu einer Programmanweisung gehörenden Kommentare werden in einer derartigen Weise ausgegeben, dass sie unmittelbar vor dieser Anweisung auftreten. Die Grammatik wird so geändert, dass derartige Kommentare erkannt werden, und infolgedessen dient der Kommentar „/* xxxx */“ als Teil des Syntaxanalysebaums als untergeordnetes/gleichrangiges Element der zu diesem Kommentar gehörenden Anweisung.
  • In einer nächsten Phase 370, der semantischen Analysephase, werden semantische Aktionen geschrieben, die die zu Kommentaren gehörenden Knoten berücksichtigen und die in ihnen eingebetteten Optimierungscodes zusammen mit Bereitgestellten entsprechenden Parametern verwenden, um entweder einen Bericht 380 zu erzeugen, der anwendbare Pragmas und/oder Merker enthält, die die Leistung verbessern oder optimalen Code 385 im Computer erzeugen können.
  • Die semantische Analysephase erzeugt semantische Aktionen, führt Typprüfungen durch und führt letztlich zur Erzeugung von Zwischencode. Ferner werden gemäß einem Aspekt der vorliegenden Erfindung weitere Aufgaben ausgeführt, einschließlich zum Beispiel:
    • • des Erzeugens von Empfehlungen für den Benutzer in einer Protokolldatei in Abhängigkeit vom Vorliegen von Merkern/Pragmas, die dem aus den Kommentaren erhaltenen Einblick entsprechen. Beispielsweise kann ein mit Anmerkungen versehener Bericht 380 erzeugt werden, der nützliche Pragmas und/oder Merker beinhaltet, die bei Verwendung die Leistung des Codes (z.B. des Binärcodes) verbessern.
    • • des Erzeugens eines im Vergleich zum Originalcode optimalen Zwischencodes auf der Grundlage der aus den Kommentaren erhaltenen Einblicke. Beispielsweise wird durch den Prozessor automatisch der optimale Code 385 erzeugt, der an nachfolgende Phasen des Compilers weitergegeben wird, z.B. zur Optimierung und/oder Erzeugung von maschinenspezifischem Code. Der entstehende Binärcode ist effizienter als der ursprüngliche Binärcode und stellt bei Ausführung eine verbesserte Leistung bereit.
  • Um dies zu erreichen, verwendet die semantische Analysephase vererbte und synthetisierte Attribute, um die Intelligenz der Kommentare an die Zwischencode-Erzeugungsphase des Compilers weiterzugeben. Aus diesem Grund ist die Position der Kommentare nützlich, und aufgrund ihrer Nähe zu den relevanten Anweisungen im Programm können diese Attribute als Behelf dienen, um die Intelligenz aus den Kommentaren über die Anweisungen auf die Art und Weise zu übertragen, in der der Code für die Anweisungen erzeugt wird.
  • Die folgenden Beispiele stellen weitere Einzelheiten darüber bereit, wie Attribute verwendet werden, um die Erzeugung des optimalen Codes/das Bereitstellen von Empfehlungen durchzuführen:
  • Beispiel 1: Beispiel für das Erzeugen eines Vorschlags für den Benutzer in einer Protokolldatei
  • Oftmals sind Datenstrukturen in Programmen mit einer größeren als der erforderlichen Größe definiert. Diese Datenstrukturen könnten Zustände in einem Programm oder Quadrate auf einem Schachbrett darstellen. Standardmäßig weisen Programmierer Typen für Datenstrukturen als „int“ (Integer) zu. Die Anzahl möglicher Zustände bei dieser Variablen kann jedoch viel kleiner als MAXINT bzw. 264-1 sein. Es wurde beispielsweise beobachtet, dass Informationen, die Zustände darstellen, die eine Anzahl möglicher Werte auf einem Schachbrett und in derartigen Programmen darstellen, als Teil der Kommentare enthalten sind. In derartigen Fällen können diese Kommentare genutzt werden, um Empfehlungen bereitzustellen, im Vergleich zum Originaltyp eine viel geringere Größe zu verwenden.
  •            /* Number of possible states is 100 */
               int states[64]; 
               Kann übersetzt werden in:
               /* 10032 2 100 */
               int states[64];
    wobei 10032 zu einer Verringerung der Speicherbelegung führt und 2 und 100 anzeigen, dass log2(100) Bits ausreichen, um jedes Element des Zustandsarrays zu speichern.
  • Semantische Aktionen hierfür:
  •            Type-decln -> Type Varlist
               Type -> Type1 int
               Type1-> /* N1 N2 N3 */ {
                           if(N2 == 10032 && N1==2) {
    
                            Set Type1.attribute to a data type which is large enough to hold
     log2 (N3) bits
                               }
                         }
               Type-> Type1 int {
                        Wenn Type1.attribute nicht int ist, dem Benutzer eine Empfehlung
     bereitstellen, Type1.attribute anstelle von int zu verwenden, wodurch weniger Speicherplatz
     belegt wird
                     }
  • Beispiel 2: Beispiel für das Beeinflussen der Reihenfolge von Anweisungen während der Zwischencodeerzeugung
  • Figure DE112018004660T5_0001
    Figure DE112018004660T5_0002
  • Semantische Aktionen hierfür:
    Figure DE112018004660T5_0003
    Figure DE112018004660T5_0004
  • Wenn der Programmierer „_builtin_expect (cond, 1)“ angibt, weist dies darauf hin, dass „cond“ meistens wahr ist und den Compiler veranlasst, optimalen Code zu erzeugen, der Einbußen im Zusammenhang mit Verzweigungen verringert.
  • Außer den grundlegenden Optimierungen unterstützen viele Compiler-Optimierungen, die auf profilgesteuerten Rückmeldungen beruhen. Diese Optimierungen sind auf die Pfade gerichtet, die am häufigsten ausgeführt werden. Diese Pfade werden auf der Grundlage von Profilinformationen erkannt, die bei Durchläufen mit Trainingsdaten gesammelt werden. Gemäß einem Aspekt der vorliegenden Erfindung wird ein alternatives Mittel zum Erkennen dieser Pfade bereitgestellt, das Informationen in Kommentaren verwendet. Ein derartiger Kommentar wurde aus einer tatsächlichen Anwendung entnommen, die heutzutage verwendet wird:
    Figure DE112018004660T5_0005
    Figure DE112018004660T5_0006
  • Beispiel 3: Beispiel für das Empfehlen von Pragmas, die die Optimierung beeinflussen
  • Figure DE112018004660T5_0007
  • „expected_value“ ist ein Pragma, das durch den XL-Compiler erkannt wird und in den Compiler-Handbüchern dokumentiert ist. „expected_value (var, X)“ teilt dem Compiler mit, dass die Variable „var“ meistens vermutlich den Wert „X“ hat. Dementsprechend trägt dies dazu bei, dass der Compiler weitere Optimierungen durchführt.
  • Beispiel 4: Beispiel für das Empfehlen von Merkern, die die Optimierung beeinflussen
  • Figure DE112018004660T5_0008
  • Semantische Aktionen hierfür:
    Figure DE112018004660T5_0009
    Figure DE112018004660T5_0010
  • Gemäß einem oder mehreren Aspekten werden wie hierin beschrieben Einblick bietende Kommentare, die die Leistung des diese Kommentare enthaltenden Programms verbessern können, erkannt und in aussagefähige Strukturen übersetzt, die der Compiler verwenden kann, um effizienten Code zu erzeugen oder für den Benutzer Compiler-Merker oder -Pragmas vorzuschlagen.
  • Bei einem Aspekt wird eine Fähigkeit bereitgestellt, um einen Compiler in die Lage zu versetzen, die Erstellung von Binärcodes zu optimieren, indem nützliche Informationen aus Quellcodekommentaren extrahiert und diese Kommentare in Strukturcodes übersetzt werden, die durch Compiler-Phasen erkennbar sind.
  • Beispielsweise werden nützliche Informationen (Syntax oder Merkmale) in Quellcodekommentaren oder Pragmas erkannt bzw. aus diesen extrahiert, indem die Kommentare unter Verwendung von Techniken des maschinellen Lernens syntaktisch analysiert werden. Den Kommentaren werden unter Verwendung eines Klassifikatormodells Punktbewertungen zugewiesen, und nützliche Abschnitte der Kommentare werden auf der Grundlage der jedem Kommentar zugewiesenen Punktbewertungen klassifiziert. Kommentare mit einer hohen Vertrauenspunktbewertung werden beibehalten und als tatsächliche Programmeinheiten behandelt. Diese Kommentare dienen als Syntaxanalysebaumknoten und erleichtern das Zuweisen bestimmter Attribute zu den Syntaxanalysebaumknoten, die dazu führen, dass Empfehlungen für den Benutzer erzeugt werden und/oder die Codeerzeugung beeinflusst wird. Extrahierte Informationen werden aus den Kommentaren dynamisch in Zwischencodes oder Programmcodes konvertiert, die durch den Compiler erkennbar sind. Die konvertierten Programmcodes werden Compilern zum Optimieren der Erstellung von Binärcodes empfohlen.
  • Kommentare werden unter Verwendung speziell ausgelegter Modelle des maschinellen Lernens erkannt, um diejenigen zu vereinzeln, die durch den Compiler verwendet werden können, um bestimmte Optimierungen auszulösen. Diese Kommentare werden an nachfolgende Compiler-Durchläufe weitergegeben. Der Compiler wählt diese Informationen und erzeugt entweder nützliche Pragmas/Merker als Empfehlungen für den Benutzer zur Erhöhung der Leistung oder löst die Erzeugung von optimalem Code aus dem Compiler heraus aus.
  • Bei einem Aspekt werden Programmkommentare (z.B. Klartextkommentare in natürlicher Sprache) erkannt, die verborgene Informationen enthalten, die verwendet werden können, um Optimierungen im Compiler auszulösen, oder dazu beitragen können, für Benutzerempfehlungen in Bezug auf Merker oder Pragmas zu erzeugen, die zu einer verbesserten Leistung führen können.
  • Bei einem weiteren Aspekt kann während der Vorverarbeitungsphase eine Kommentar-Optimierungs-Zuordnungsdatei erzeugt werden. Diese Datei kann Metadaten der durch Kommentare ausgelösten Optimierungen/Vorschläge enthalten. Die Metadaten können zum Beispiel die folgende Informationen für jeden Kommentar enthalten, der als für eine Optimierung durch den Compiler nützlich kategorisiert wurde: Quellzeile::OPTCODE-Parameterliste. Angenommen, dass nur die Zuordnungsdatei und unveränderter Quellcode vorliegen, kann der Präprozessor die Zuordnungsdatei verwenden, um zu entscheiden, welche Kommentare auf welche Optimierungen/Vorschläge einschließlich ihrer Parameter reduziert wurden. Auf diese Weise kann derselbe Binärcode zu einem beliebigen Zeitpunkt deterministisch erhalten werden.
  • Bei noch einen weiteren Aspekt werden das Modell des maschinellen Lernens und der Präprozessor als integraler Bestandteil des Compilers behandelt, und beide werden zusammen versionsgesteuert, um denselben Binärcode zu einem Zeitpunkt zu gewährleisten.
  • Bei einem weiteren Aspekt kann ein Profilieren und Validieren bereitgestellt werden, mit dem die von Profilinformationen kommenden Hinweise und die Hinweise aus der Kommentaranalyse verglichen werden, um zu ermitteln, welche vorgeschlagenen Optimierungen verwendet werden sollen. Dieses Profilieren und Validieren wird z.B. ausgeführt, wenn der Benutzer eine Leistungsverschlechterung anhand der Kommentaranalyse beobachtet, die z.B. aktiviert wird, indem ein neuer Compiler-Merker„-muse_comments“ verwendet wird, der bei der Verwendung zum Kompilieren den Compiler in die Lage versetzt, Informationen zu nutzen, die in den Kommentaren zum Auslösen von Optimierungen verfügbar sind. Sobald die Validierung auf einen unzulässigen Kommentar zeigt und die Wirkung des Kommentars ausgeschaltet wird, müssen beliebige zukünftige Compiler-Durchläufe nicht alle Profilrückmeldungen abarbeiten.
  • Ein oder mehrere Aspekte der vorliegenden Erfindung sind untrennbar mit der Computertechnologie verbunden und erleichtern die Verarbeitung in einem Computer, indem sie dessen Leistung verbessern. Weitere Einzelheiten einer Ausführungsform, die die Bearbeitung in einer Datenverarbeitungsumgebung erleichtert, da sie eine oder mehrere Aspekte der vorliegenden Erfindung betrifft, sind unter Bezugnahme auf die 4A bis 4B beschrieben.
  • Unter Bezugnahme auf 4A erhält bei einer Ausführungsform eine Übersetzungskomponente eines Prozessors der Datenverarbeitungsumgebung einen oder mehrere codierte Kommentare, die durch die Übersetzungskomponente beim Bereitstellen einer oder mehrerer Optimierungen verwendet werden sollen, um die Verarbeitung innerhalb der Datenverarbeitungsumgebung zu optimieren (400). Der eine oder die mehreren codierten Kommentare beinhalten einen oder mehrere Kommentare eines Computerprogramms, bei denen festgestellt wurde, dass sie Informationen enthalten, die der Übersetzungskomponente bereitgestellt und codiert werden sollen, um den einen oder die mehreren codierten Kommentare bereitzustellen (402). Die Übersetzungskomponente verwendet den einen oder die mehreren codierten Kommentare, um die Verarbeitung innerhalb der Datenverarbeitungsumgebung zu optimieren (404).
  • Beispielsweise beinhaltet das Verwenden des einen oder der mehreren codierten Kommentare zum Optimieren der Verarbeitung das Verwenden des einen oder der mehreren codierten Kommentare beim Übersetzen von Code des Computerprogramms in einen durch Maschinen lesbaren Code (406). Bei einem Beispiel beinhaltet der durch Maschinen lesbare Code eine oder mehrere Codeoptimierungen auf der Grundlage des einen oder der mehreren codierten Kommentare (408).
  • Weiterhin beispielhaft beinhaltet das Verwenden des einen oder der mehreren codierten Kommentare zum Optimieren der Verarbeitung das Verwenden des einen oder der mehreren codierten Kommentare, um einen Bericht zu erzeugen, der eine oder mehrere Änderungen angibt, die an dem Computerprogramm vorzunehmen sind, um die Verarbeitung zu optimieren (409). Durch Erzeugen des Berichts kann das Computerprogramm geändert werden, wodurch der Code und daher die Verarbeitung innerhalb der Datenverarbeitungsumgebung verbessert werden.
  • Bei einer Ausführungsform wird auf der Grundlage des Erhaltens des einen oder der mehreren codierten Kommentare eine Struktur aufgebaut (410). Die Struktur beinhaltet eine Mehrzahl von Knoten (412), und die Mehrzahl von Knoten beinhaltet einen oder mehrere Knoten für eine oder mehrere Programmkomponenten des Computerprogramms und einen oder mehrere Knoten für einen oder mehrere codierte Kommentare (414).
  • Beispielsweise beinhaltet bei einer Ausführungsform unter Bezugnahme auf 4B das Erhalten des einen oder der mehreren codierten Kommentare das Erhalten des einen oder der mehreren codierten Kommentare von einer Vorverarbeitungskomponente des Prozessors (420). Die Vorverarbeitungskomponente ermittelt den einen oder die mehreren Kommentare des Computerprogramms, die zur Verwendung durch die Übersetzungskomponente beibehalten werden sollen (422), und codiert den einen oder die mehreren Kommentare, um den einen oder die mehreren codierten Kommentare bereitzustellen (424).
  • Das Ermitteln des einen oder der mehreren beizubehaltenden Kommentare beinhaltet zum Beispiel das Feststellen, dass ein oder mehrere Kommentare einem Vertrauensschwellenwert entsprechen, der angibt, dass der eine oder die mehreren Kommentare voraussichtlich Informationen enthalten, die beim Optimieren der Verarbeitung nützlich sind (426). Ferner beinhaltet bei einem Beispiel das Codieren bei einem Kommentar des einen oder der mehreren Kommentare das Bereitstellen eines Optimierungscodes und eines oder mehrerer Parameter für den Kommentar, um einen codierten Kommentar bereitzustellen (428).
  • Beispielsweise ist die Vorverarbeitungskomponente Teil einer Übersetzungskomponente oder davon getrennt, aber mit der Übersetzungskomponente verbunden (430).
  • Andere Varianten und Ausführungsformen sind möglich.
  • Andere Arten von Datenverarbeitungsumgebung können außerdem einen oder mehrere Aspekte der vorliegenden Erfindung einbeziehen und verwenden, einschließlich und ohne darauf beschränkt zu sein, von Emulationsumgebungen, von denen ein Beispiel unter Bezugnahme auf 5A beschrieben ist. Bei diesem Beispiel beinhaltet eine Datenverarbeitungsumgebung 20 zum Beispiel eine native Zentraleinheit (CPU) 22, einen Speicher 24 und eine oder mehrere Eingabe-/Ausgabeeinheiten und/oder Schnittstellen 26, die untereinander zum Beispiel über einen oder mehrere Busse 28 und/oder andere Verbindungen verbunden sind. Beispielsweise kann die Datenverarbeitungsumgebung 20 einen PowerPC-Prozessor oder einen pSeries-Server beinhalten, die von International Business Machines Corporation, Armonk, New York, angeboten werden; und/oder andere Maschinen, die auf Architekturen beruhen, die von International Business Machines Corporation, Intel oder anderen Unternehmen angeboten werden.
  • Die native Zentraleinheit 22 beinhaltet ein oder mehrere native Register 30 wie zum Beispiel ein oder mehrere Mehrzweckregister und/oder ein oder mehrere Spezialregister, die während der Verarbeitung innerhalb der Umgebung verwendet werden. Diese Register beinhalten Informationen, die den Zustand der Umgebung zu jedem beliebigen Zeitpunkt wiedergeben.
  • Darüber hinaus führt die native Zentraleinheit 22 Anweisungen und Code aus, die im Speicher 24 gespeichert sind. Bei einem bestimmten Beispiel führt die Zentraleinheit Emulatorcode 32 aus, der im Speicher 24 gespeichert ist. Dieser Code ermöglicht der in einer Architektur konfigurierten Datenverarbeitungseinheit, eine andere Architektur zu emulieren. Beispielsweise ermöglicht der Emulatorcode 32 Maschinen, die auf anderen Architekturen als der z/Architecture wie z.B. PowerPC-Prozessoren, pSeries-Servern oder anderen Messungen oder Prozessoren beruhen, die z/Architecture zu emulieren und Software und Anweisungen auszuführen, die auf der Grundlage der z/Architecture entwickelt wurden.
  • Ferner sind Einzelheiten, die den Emulatorcode 32 betreffen, unter Bezugnahme auf 5B beschrieben. Im Speicher 24 gespeicherte Gastanweisungen 40 weisen Softwareanweisungen (die z.B. im Zusammenhang mit Maschinenanweisungen stehen) auf, die zur Ausführung in einer anderen Architektur als der der nativen CPU 22 entwickelt wurden. Zum Beispiel können Gastanweisungen 40 entwickelt worden sein, um auf einem z/Architecture-Prozessor ausgeführt zu werden, werden aber stattdessen auf der nativen CPU 22 emuliert, bei der es sich zum Beispiel um einen Intel-Prozessor handeln kann. Bei einem Beispiel beinhaltet der Emulatorcode 32 eine Anweisungsabrufeinheit 42, um eine oder mehrere Gastanweisungen 40 aus dem Speicher 24 zu erhalten und wahlweise eine lokale Pufferung für die erhaltenen Anweisungen bereitzustellen. Außerdem beinhaltet er eine Anweisungsübersetzungsroutine 44, um die Art von Gastanweisung zu ermitteln, die erhalten wurde, und die Gastanweisung in eine oder mehrere entsprechende native Anweisungen 46 zu übersetzen. Diese Übersetzung beinhaltet zum Beispiel das Erkennen der Funktion, die durch die Gastanweisung durchzuführen ist, und das Auswählen der nativen Anweisung(en), um diese Funktion durchzuführen.
  • Ferner beinhaltet der Emulatorcode 32 eine Emulationssteuerroutine 48, um zu bewirken, dass die nativen Anweisungen ausgeführt werden. Die Emulationssteuerroutine 48 kann die native CPU 22 veranlassen, eine Routine aus nativen Anweisungen auszuführen, die eine oder mehrere zuvor erhaltene Gastanweisungen emulieren, und zum Abschluss einer derartigen Ausführung die Steuerung an die Anweisungsabrufroutine zurückzugeben, um das Erhalten der nächsten Gastanweisung oder einer Gruppe von Gastanweisungen zu emulieren. Die Ausführung nativer Anweisungen 46 kann das Laden von Daten aus dem Speicher 24 in ein Register beinhalten; das Speichern von Daten aus einem Register zurück in den Speicher; oder das Durchführen einer bestimmten Art von Arithmetik- oder Logikoperation, die durch die Übersetzungsroutine ermittelt wurde.
  • Jede Routine ist zum Beispiel in Software realisiert, die im Speicher gespeichert ist und durch native Zentraleinheit 22 ausgeführt wird. Bei anderen Beispielen sind eine oder mehrere der Routinen oder Operationen in Firmware, Hardware, Software oder in einer bestimmten Kombination davon realisiert. Die Register des emulierten Prozessors können unter Verwendung der Register 30 der nativen CPU oder durch Verwendung von Speicherplätzen im Speicher 24 emuliert sein. Bei Ausführungsformen können sich Gastanweisungen 40, native Anweisungen 46 und Emulatorcode 32 im selben Speicher befinden oder auf unterschiedlichen Speichereinheiten ausgelagert sein.
  • Im hierin verwendeten Sinne beinhaltet die Firmware z.B. den Mikrocode oder den Millicode des Prozessors. Er beinhaltet zum Beispiel die Anweisungen auf der Hardwareebene und/oder Datenstrukturen, die zur Realisierung eines höheren Maschinencodes verwendet werden. Bei einer Ausführungsform beinhaltet er zum Beispiel einen proprietären Code, der normalerweise als Mikrocode bereitgestellt ist und vertrauenswürdige Software oder vertrauenswürdigen Mikrocode beinhaltet, der für die zugrunde liegende Hardware spezifisch ist und den Zugriff des Betriebssystems auf die Systemhardware steuert.
  • Ein oder mehrere Aspekte können das Cloud-Computing betreffen.
  • Es versteht sich von vornherein, dass eine Realisierung der hierin vorgestellten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung des Cloud-Computing enthält. Vielmehr können Ausführungsformen der vorliegenden Erfindung in Verbindung mit einer beliebigen anderen Art von Datenverarbeitungsumgebung realisiert werden, die gegenwärtig bekannt ist oder in Zukunft entwickelt wird.
  • Cloud-Computing ist ein Modell zur Bereitstellung von Diensten, um einen praktischen und bei Bedarf verfügbaren Netzwerkzugriff auf ein gemeinsam genutztes Reservoir konfigurierbarer Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste) zu ermöglichen, die bei minimalem Verwaltungsaufwand oder minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle enthalten.
  • Die Eigenschaften sind folgende:
    • On-demand Self Service (Selbstzuweisung bei Bedarf): Ein Cloud-Kunde kann sich einseitig Datenverarbeitungsfunktionen wie zum Beispiel Serverzeit und Netzwerkspeicher dem Bedarf entsprechend automatisch bereitstellen, ohne dass eine Interaktion von Menschen mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access (umfassender Netzwerkzugriff): Es stehen Funktionen über ein Netzwerk zur Verfügung, auf die der Zugriff über Standardmechanismen erfolgt, die die Verwendung heterogener Thin- oder Thick-Quellplattformen (z.B. Mobiltelefone, Notebook-Computer und PDAs) unterstützen.
  • Resource Pooling (Ressourcenbündelung): Die Datenverarbeitungsressourcen des Anbieters werden gebündelt, um mehrere Kunden unter Verwendung eines Mehrfachnutzermodells mit unterschiedlichen physischen und virtuellen Ressourcen zu bedienen, die entsprechend dem Bedarf dynamisch zugewiesen und neu zugewiesen werden. Es besteht eine gefühlte Ortsunabhängigkeit in der Weise, dass der Kunde im Allgemeinen keine Kontrolle oder Kenntnis über den exakten Ort der bereitgestellten Ressourcen hat, aber möglicherweise in der Lage ist, den Ort auf einer höheren Abstraktionsebene (z.B. Land, Bundesstaat oder Datenverarbeitungszentrum) anzugeben.
  • Rapid Elasticity (rasche Elastizität): Funktionen können rasch und elastisch bereitgestellt werden, in einigen Fällen automatisch, um den Funktionsumfang schnell nach oben anzupassen, und schnell freigegeben werden, um den Funktionsumfang schnell nach unten anzupassen. Für den Kunden entsteht oftmals der Eindruck, dass die zur Bereitstellung verfügbaren Funktionen unbegrenzt sind und jederzeit in jeder beliebigen Menge gekauft werden können.
  • Measured Service (bemessener Dienst): Cloud-Systeme steuern und optimieren automatisch die Ressourcenverwendung durch Nutzung einer Bemessungsfunktion auf einer bestimmten Abstraktionsebene, die für die Art des Dienstes geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, sodass Transparenz sowohl für den Anbieter als auch den Kunden des genutzten Dienstes besteht.
  • Die Dienstmodelle sind folgende:
    • Software as a Service (SaaS) (Software als Dienst): Die dem Kunden bereitgestellte Funktion besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu nutzen. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie z.B. einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her zugänglich. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz oder sogar einzelnen Anwendungsfähigkeiten nicht, abgesehen von der möglichen Ausnahme eingeschränkter benutzerspezifischer Konfigurationseinstellungen von Anwendungen.
  • Platform as a Service (PaaS) (Plattform als Dienst): Die dem Kunden bereitgestellte Funktion besteht darin, auf der Cloud-Infrastruktur vom Kunden erzeugte oder erworbene Anwendungen bereitzustellen, die unter Verwendung von Programmiersprachen und Programmierwerkzeugen erzeugt wurden, die durch den Anbieter unterstützt werden. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz nicht, hat aber die Kontrolle über die bereitgestellten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendungen.
  • Infrastructure as a Service (laaS) (Infrastruktur als Dienst): Die dem Kunden bereitgestellte Funktion besteht darin, Verarbeitung, Speicherplatz, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Kunde beliebige Software bereitstellen und ausführen kann, zu der Betriebssysteme und Anwendungen gehören können. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicherplatz sowie bereitgestellte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Vernetzungskomponenten (z.B. Host-Firewalls).
  • Die Bereitstellungsmodelle sind folgende:
    • Private Cloud (private Cloud): Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und in den Räumen der Organisation oder außerhalb davon vorhanden sein.
  • Community Cloud (Community-Cloud): Die Cloud-Infrastruktur wird von mehreren Organisationen genutzt und unterstützt eine bestimmte Benutzergemeinschaft, die gemeinsame Interessen hat (z.B. Gesichtspunkte im Zusammenhang mit einer Aufgabe, mit Sicherheitsanforderungen, Richtlinien und mit der Einhaltung von Gesetzen und Vorschriften). Sie kann durch die Organisation oder einen Dritten verwaltet werden und in den Räumen der Organisation oder außerhalb davon vorhanden sein.
  • Public Cloud (öffentliche Cloud): Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Gruppe in einem Industriezweig zur Verfügung gestellt und ist Eigentum einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid Cloud (Hybrid-Cloud): Die Cloud-Infrastruktur ist eine Mischung aus zwei oder mehreren Clouds (Private Cloud, Community Cloud oder Public Cloud), die eigenständige Einheiten bleiben, aber über eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die die Portierbarkeit von Daten und Anwendungen ermöglicht (z.B. Cloud-Zielgruppenverteilung (Cloud Bursting) zum Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandsunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt des Cloud-Computing steht eine Infrastruktur, die ein Netzwerk aus untereinander verbundenen Knoten aufweist.
  • Unter Bezugnahme auf 6 ist dort eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen lokale Datenverarbeitungseinheiten wie zum Beispiel ein Personal Digital Assistant (PDA) oder ein Mobiltelefon 54A, ein Desktop-Computer 54B, ein Notebook-Computer 54C und/oder ein Automobil-Computersystem 54N Daten austauschen können, die durch Cloud-Kunden verwendet werden. Die Knoten 10 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie zum Beispiel in einer hierin oben beschriebenen Private Cloud, Community Cloud, Public Cloud oder Hybrid Cloud oder in einer Kombination davon gruppiert sein (nicht gezeigt). Dies ermöglicht der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienste zu bieten, für die ein Cloud-Kunde keine Ressourcen auf einer lokalen Datenverarbeitungseinheit zu verwalten braucht. Es versteht sich, dass die Arten von in 6 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art von Netzwerk und/oder über eine beliebige Art von Verbindung, die über ein Netzwerk aufgerufen werden kann (z.B. unter Verwendung eines Web-Browsers), mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 7 ist dort ein Satz funktionaler Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (6) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 7 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Softwareschicht 60 beinhaltet Hardware- und Softwarekomponenten. Zu Beispielen für Hardwarekomponenten gehören: Großrechner 61; auf der RISC-Architektur (RISC = Reduced Instruction Set Computer) beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und Vernetzungskomponenten 66. Bei einigen Ausführungsformen beinhalten Softwarekomponenten eine Netzwerk-Anwendungsserversoftware 67 und eine Datenbanksoftware 68.
  • Eine Virtualisierungsschicht 70 stellt eine Absorptionsschicht bereit, von der aus die folgenden Beispiele von virtuellen Einheiten bereitgestellt sein können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73 einschließlich virtueller privater Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • Bei einem Beispiel kann eine Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen und von anderen Ressourcen bereit, die genutzt werden, um Aufgaben innerhalb der Cloud-Computing-Umgebung durchzuführen. Eine Gebührenerfassung und Preisberechnung 82 stellt eine Kostenverfolgung bereit, während Ressourcen innerhalb der Cloud-Computing-Umgebung genutzt werden, sowie eine Abrechnung und Fakturierung des Verbrauchs dieser Ressourcen. Bei einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen aufweisen. Eine Sicherheit stellt eine Identitätsüberprüfung für Cloud-Kunden und Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 bietet Kunden und Systemadministratoren einen Zugang zur Cloud-Computing-Umgebung. Eine Dienstgüteverwaltung (Service Level Management) 84 stellt eine Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die jeweils erforderliche Dienstgüte erreicht wird. Eine Planung und Erfüllung von Dienstgütevereinbarungen 85 (Service Level Agreement (SLA), Servicevertrag) stellt die Vorausplanung für und die Beschaffung von Cloud-Computing-Ressourcen bereit, für die auf der Grundlage eines SLA zukünftige Anforderungen erwartet werden.
  • Eine Betriebslastschicht 90 stellt Beispiele von Funktionalitäten bereit, für die die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Betriebslasten und Funktionen, die von dieser Ebene aus bereitgestellt werden können, gehören: Zuordnung und Navigation 91; Softwareentwicklung und -verwaltung 92 während des Lebenszyklus; Bereitstellung 93 von Schulungen in virtuellen Schulungsräumen; Verarbeitung 94 von Datenanalysen; Transaktionsverarbeitung 95; und Verarbeitung 96 von Programmkommentaren.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt in einem beliebigen möglichen Integrationsgrad technischer Einzelheiten handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, auf der Anweisungen zur Verwendung durch eine Vorrichtung zur Ausführung von Anweisungen aufbewahrt und gespeichert sein können. Bei dem einen Computer lesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, eine elektronische Speichereinheit, um eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination des Vorstehenden handeln. Zu einer nicht erschöpfenden Liste konkreterer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine transportable Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und beliebige geeignete Kombinationen des Vorstehenden. Ein durch einen Computer lesbares Speichermedium im hierin verwendeten Sinne ist nicht so auszulegen, dass es sich dabei um flüchtige Signale handelt, beispielsweise um Funkwellen oder sich frei ausbreitende elektromagnetische Wellen, um elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder um elektrische Signale, die über ein Kabel übertragen werden.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk ein Weitverkehrsnetzwerk und/oder ein Drahtlosnetzwerk von einem durch Computer lesbaren Speichermedium auf betreffende Datenverarbeitungs-/Verarbeitungseinheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, Drahtlosübertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle bei jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch Computer lesbaren Programmanweisungen zur Speicherung in einem durch Computer lesbaren Speichermedium innerhalb der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie z.B. Smalltalk, C++ o.Ä. sowie prozedurale Programmiersprachen wie z.B. die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (Local Area Network, LAN) oder über ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann zu einem externen Computer hergestellt sein (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)). Bei einigen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltungen, vor Ort programmierbare Schaltkreise (Field-Programmable Gate Arrays, FPGA) oder programmierbare logische Arrays (PLA) gehören, die durch Computer lesbaren Programmanweisungen ausführen, indem Zustandsinformationen der durch Computer lesbaren Programmanweisungen genutzt werden, um die elektronische Schaltung zu personalisieren, sodass Aspekte der vorliegenden Erfindung durchgeführt werden.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Flussdiagrammdarstellungen und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata durch Computerprogrammanweisungen realisiert werden kann bzw. können.
  • Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderer programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Block bzw. in den Blöcken des Flussdiagramms bzw. der Flussdiagramme und/oder des Blockschemas bzw. der Blockschemata angegebenen Funktionen/Aktionen zu realisieren. Diese durch einen Computer lesbaren Programmanweisungen können ebenfalls in einem durch Computer lesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass das durch Computer lesbare Medium mit darauf gespeicherten Anweisungen ein Erzeugnis aufweist, das Anweisungen enthält, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.
  • Die durch einen Computer lesbaren Programmanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer, auf anderen programmierbaren Vorrichtungen oder Einheiten ausgeführt werden, die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen realisieren.
  • Die Flussdiagramme und Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Flussdiagrammen bzw. in den Blockschemata eine Steuerungskomponente, ein Segment oder einen Abschnitt von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Bei einigen alternativen Realisierungsformen können die im Block angegebenen Funktionen in einer anderen als in der Reihenfolge ausgeführt werden, die in den Figuren angegeben ist. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der mit den Blöcken verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der dargestellten Blockschemata und/oder Flussdiagramme sowie Kombinationen von Blöcken in den dargestellten Blockschemata und/oder Flussdiagrammen mit Hilfe zweckgebundener hardwaregestützter Systeme zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mit Hilfe von Kombinationen aus zweckgebundener Hardware und zweckgebundenen Computeranweisungen realisiert werden kann bzw. können.
  • Zusätzlich zu den vorstehenden Ausführungen können ein oder mehrere Aspekte durch einen Dienstanbieter bereitgestellt, angeboten, installiert, verwaltet, gewartet usw. werden, der die Verwaltung von Kundenumgebungen anbietet. Zum Beispiel kann der Dienstanbieter Computercode und/oder eine Computerinfrastruktur schaffen, aufrechterhalten, unterstützen usw., die für einen oder mehrere Kunden einen oder mehrere Aspekte durchführt. Im Gegenzug kann der Dienstanbieter beispielsweise im Rahmen einer Abonnements- und/oder Gebührenvereinbarung eine Bezahlung erhalten. Darüber hinaus oder alternativ kann der Dienstanbieter eine Bezahlung aus dem Verkauf von Werbeinhalten an einen oder mehrere Dritte erhalten.
  • Bei einem Aspekt kann eine Anwendung zum Durchführen einer oder mehrerer Ausführungsformen installiert sein. Um ein Beispiel zu nennen, weist das Installieren einer Anwendung das Bereitstellen einer Computerinfrastruktur auf, die funktionsmäßig so gestaltet ist, dass eine oder mehrere Ausführungsformen durchgeführt werden.
  • Als weiterer Aspekt kann eine Datenverarbeitungsinfrastruktur installiert sein, die das Integrieren von computerlesbarem Code in ein Datenverarbeitungssystem aufweist, bei dem der Code in Kombination mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Ausführungsformen durchzuführen.
  • Gemäß einem noch weiteren Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungsinfrastruktur bereitgestellt sein, der das Integrieren von computerlesbarem Code in ein Computersystem aufweist. Das Computersystem weist ein durch einen Computer lesbares Medium auf, bei dem das Computermedium ein oder mehrere Ausführungsformen aufweist. Der Code in Kombination mit dem Computersystem ist in der Lage, eine oder mehrere Ausführungsformen durchzuführen.
  • Obwohl oben verschiedene Ausführungsformen beschrieben sind, handelt es sich hierbei lediglich um Beispiele. Zum Beispiel können Datenverarbeitungsumgebungen anderer Architekturen verwendet werden, um eine oder mehrere Ausführungsformen einzubeziehen und zu verwenden. Ferner können andere Arten von Trainingstechniken und/oder Klassifikatoren verwendet werden. Des Weiteren können andere Mechanismen verwendet werden, um zu ermitteln, welche Kommentare beizubehalten sind und/oder wie die beibehaltenen Kommentare zu codieren sind. Viele Variationen sind möglich.
  • Ferner können andere Arten von Datenverarbeitungsumgebungen profitieren und verwendet werden. Beispielsweise ist ein Datenverarbeitungssystem verwendbar, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, das mindestens zwei Prozessoren beinhaltet, die über einen Systembus direkt oder indirekt mit Speicherelementen verbunden sind. Die Speicherelemente beinhalten zum Beispiel lokalen Speicher, der während der eigentlichen Ausführung des Programmcodes genutzt wird, Massenspeicher und Cache, die eine zeitweilige Speicherung mindestens eines Teils des Programmcodes bereitstellen, um während der Ausführung die Anzahl der Codeabrufe aus dem Massenspeicher zu verringern.
  • Eingabe-/Ausgabeeinheiten bzw. E/A-Einheiten (einschließlich und ohne auf diese beschränkt zu sein, Tastaturen, Anzeigeeinheiten, Zeigeeinheiten, DASD, Band, CDs, DVDs, USB-Sticks und anderer Speichermedien usw.) können entweder direkt oder über zwischengeschaltete E/A-Steuereinheiten mit dem System verbunden sein. Netzwerkadapter können ebenfalls mit dem System verbunden sein, sodass das Datenverarbeitungssystem über zwischengeschaltete private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen, entfernt angeordneten Druckern oder Speichereinheiten verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind nur einige der erhältlichen Arten von Netzwerkadaptern.
  • Die hierin verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung gedacht. Die hierin verwendeten Einzahlformen „ein/eine“ und „der/die/das“ schließen auch die Pluralformen ein, sofern dies im Kontext nicht ausdrücklich anderweitig angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „weist auf“ bzw. „aufweisen/aufweisend“ bei Verwendung in dieser Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten bezeichnen, jedoch das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel bzw. Schritt-plus-Funktion-Elemente (Step plus Function Elements) in den folgenden Ansprüchen sollen gegebenenfalls alle Strukturen, Materialien oder Aktionen zur Ausführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen mit einschließen. Die Beschreibung einer oder mehrerer Ausführungsformen soll der Veranschaulichung und Beschreibung dienen, ist jedoch nicht als vollständig oder auf die offenbarte Form beschränkt gedacht. Viele Abänderungen und Variationen sind für den Fachmann klar. Die Ausführungsform wurde gewählt und beschrieben, um verschiedene Aspekte und die praktische Anwendung auf bestmögliche Weise zu erklären und anderen Fachleuten das Verständnis verschiedener Ausführungsformen mit verschiedenen Abänderungen für die betreffende vorgeschlagene Verwendung zu ermöglichen.
  • Claims (11)

    1. Mittels Computer realisiertes Verfahren zum Erleichtern der Verarbeitung in einer Datenverarbeitungsumgebung, wobei das mittels Computer realisierte Verfahren aufweist: durch eine Übersetzungskomponente eines Prozessors der Datenverarbeitungsumgebung ein Erhalten eines oder mehrerer codierter Kommentare, die durch die Übersetzungskomponente beim Bereitstellen einer oder mehrerer Optimierungen verwendet werden sollen, um die Verarbeitung innerhalb der Datenverarbeitungsumgebung zu optimieren, wobei der eine oder die mehreren codierten Kommentare einen oder mehrere Kommentare eines Computerprogramms beinhalten, von denen festgestellt wurde, dass sie Informationen enthalten, die der Übersetzungskomponente bereitgestellt und codiert werden sollen, um den einen oder die mehreren codierten Kommentare bereitzustellen; und durch die Übersetzungskomponente ein Verwenden des einen oder der mehreren codierten Kommentare, um die Verarbeitung innerhalb der Datenverarbeitungsumgebung zu optimieren.
    2. Mittels Computer realisiertes Verfahren nach Anspruch 1, wobei das Verwenden des einen oder der mehreren codierten Kommentare zum Optimieren der Verarbeitung das Verwenden des einen oder der mehreren codierten Kommentare beim Übersetzen von Code des Computerprogramms in einen durch Maschinen lesbaren Code beinhaltet.
    3. Mittels Computer realisiertes Verfahren nach Anspruch 1, wobei das Verwenden des einen oder der mehreren codierten Kommentare zum Optimieren der Verarbeitung das Verwenden des einen oder der mehreren codierten Kommentare beinhaltet, um einen Bericht zu erzeugen, der eine oder mehrere Änderungen angibt, die an dem Computerprogramm vorzunehmen sind, um die Verarbeitung zu optimieren.
    4. Mittels Computer realisiertes Verfahren nach Anspruch 1, wobei das Erhalten des einen oder der mehreren codierten Kommentare ein Erhalten des einen oder der mehreren codierten Kommentare von einer Vorverarbeitungskomponente des Prozessors aufweist und wobei das Verfahren ferner aufweist: durch die Vorverarbeitungskomponente ein Ermitteln des einen oder der mehreren Kommentare des Computerprogramms, die zur Verwendung durch die Übersetzungskomponente beizubehalten sind; und durch die Vorverarbeitungskomponente ein Codieren des einen oder der mehreren Kommentare, um den einen oder die mehreren codierten Kommentare bereitzustellen.
    5. Mittels Computer realisiertes Verfahren nach Anspruch 4 wobei für einen Kommentar des einen oder der mehreren Kommentare das Codieren ein Bereitstellen eines Optimierungscodes und eines oder mehrerer Parameter für den Kommentar aufweist, um einen codierten Kommentar bereitzustellen.
    6. Verfahren nach Anspruch 1, wobei das Verfahren ferner ein Aufbauen einer Struktur auf der Grundlage des Erhaltens des einen oder der mehreren codierten Kommentare beinhaltet, wobei die Struktur eine Mehrzahl von Knoten beinhaltet, wobei die Mehrzahl von Knoten einen oder mehrere Knoten für eine oder mehrere Programmkomponenten des Computerprogramms und einen oder mehrere Knoten für den einen oder die mehreren codierten Kommentare beinhaltet.
    7. Verfahren nach Anspruch 4, wobei das Ermitteln des einen oder der mehreren beizubehaltenden Kommentare ein Feststellen aufweist, dass ein oder mehrere Kommentare einen Vertrauensschwellenwert erfüllen, der angibt, dass der eine oder die mehreren Kommentare voraussichtlich Informationen enthalten, die beim Optimieren der Verarbeitung nützlich sind.
    8. Verfahren nach Anspruch 4, wobei die Vorverarbeitungskomponente Teil der Übersetzungskomponente ist.
    9. Verfahren nach Anspruch 4, wobei die Vorverarbeitungskomponente von der Übersetzungskomponente getrennt, aber mit der Übersetzungskomponente verbunden ist.
    10. System, das Mittel aufweist, die so gestaltet sind, dass sie alle Schritte des Verfahrens nach beliebigen der vorhergehenden Ansprüche ausführen.
    11. Computerprogramm, das Anweisungen zum Ausführen aller Schritte des Verfahrens nach beliebigen der vorhergehenden Verfahrensansprüche aufweist, wenn das Computerprogramm auf einem Computersystem ausgeführt wird.
    DE112018004660.5T 2017-11-10 2018-11-02 Verwenden von kommentaren zum bereitstellen von optimierungen Pending DE112018004660T5 (de)

    Applications Claiming Priority (3)

    Application Number Priority Date Filing Date Title
    US15/809,092 2017-11-10
    US15/809,092 US10613844B2 (en) 2017-11-10 2017-11-10 Using comments of a program to provide optimizations
    PCT/IB2018/058603 WO2019092565A1 (en) 2017-11-10 2018-11-02 Using comments of a program to provide optimizations

    Publications (1)

    Publication Number Publication Date
    DE112018004660T5 true DE112018004660T5 (de) 2020-06-10

    Family

    ID=66433298

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE112018004660.5T Pending DE112018004660T5 (de) 2017-11-10 2018-11-02 Verwenden von kommentaren zum bereitstellen von optimierungen

    Country Status (6)

    Country Link
    US (1) US10613844B2 (de)
    JP (1) JP7196171B2 (de)
    CN (1) CN111316232A (de)
    DE (1) DE112018004660T5 (de)
    GB (1) GB202007394D0 (de)
    WO (1) WO2019092565A1 (de)

    Families Citing this family (8)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US10956137B2 (en) * 2019-06-10 2021-03-23 International Business Machines Corporation Compiling source code using source code transformations selected using benchmark data
    US11340874B2 (en) * 2019-06-27 2022-05-24 Intel Corporation Methods and apparatus to recommend instruction adaptations to improve compute performance
    US20210318865A1 (en) * 2020-04-09 2021-10-14 Capital One Services, Llc Methods and arrangements to process comments
    US11775271B1 (en) * 2020-05-15 2023-10-03 Google Llc Annotations for developers
    CN112346778B (zh) * 2020-10-28 2022-02-08 常州微亿智造科技有限公司 一种Java程序编译时自动生成字节码的优化方法
    US11620127B2 (en) * 2021-05-11 2023-04-04 Sap Se Measuring documentation completeness in multiple languages
    JP7450681B1 (ja) 2022-09-27 2024-03-15 楽天グループ株式会社 情報処理装置、情報処理方法およびプログラム
    US11941378B1 (en) * 2023-10-19 2024-03-26 Hud Software Platforms Ltd. System and method for utilizing production insights in generative AI models

    Family Cites Families (23)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US5813019A (en) * 1995-07-06 1998-09-22 Sun Microsystems, Inc. Token-based computer program editor with program comment management
    US6357040B1 (en) * 1998-10-21 2002-03-12 Wildseed Limited Usage characteristic based software customization
    US6353925B1 (en) * 1999-09-22 2002-03-05 Compaq Computer Corporation System and method for lexing and parsing program annotations
    JP3847672B2 (ja) 2002-07-03 2006-11-22 松下電器産業株式会社 コンパイラ装置及びコンパイル方法
    CN100414502C (zh) * 2002-10-15 2008-08-27 国际商业机器公司 置标语言模式确认的方法及系统
    US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
    GB0316532D0 (en) 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for partitioning code in program code conversion
    CN101044574A (zh) * 2004-10-21 2007-09-26 皇家飞利浦电子股份有限公司 注释时间线文件的方法
    US20110119657A1 (en) 2007-12-07 2011-05-19 Martin Vorbach Using function calls as compiler directives
    US8190990B2 (en) * 2008-06-27 2012-05-29 Google Inc. Annotating webpage content
    US8631385B2 (en) * 2009-02-26 2014-01-14 International Business Machines Corporation Optimizing code generation system with input data integration
    US9104435B2 (en) * 2009-04-14 2015-08-11 Empire Technology Development Llc Program and data annotation for hardware customization and energy optimization
    US8364463B2 (en) * 2009-09-25 2013-01-29 International Business Machines Corporation Optimizing a language/media translation map
    US8370820B2 (en) 2009-10-20 2013-02-05 Guenthner Cynthia S Method and apparatus for enabling parallel processing during execution of a Cobol source program using two-stage compilation
    US8819649B2 (en) 2011-09-09 2014-08-26 Microsoft Corporation Profile guided just-in-time (JIT) compiler and byte code generation
    US10216500B2 (en) * 2012-02-10 2019-02-26 Oracle International Corporation Method and apparatus for synchronization annotation
    US10061573B2 (en) * 2013-01-29 2018-08-28 Mobilize.Net Corporation User interfaces of application porting software platform
    CN105103148A (zh) 2013-04-11 2015-11-25 惠普发展公司,有限责任合伙企业 自动化的基于上下文的软件本地化
    US9563585B2 (en) 2014-02-19 2017-02-07 Futurewei Technologies, Inc. System and method for isolating I/O execution via compiler and OS support
    GB2533575A (en) * 2014-12-22 2016-06-29 Ibm Elapsed time indications for source code in development environment
    US10176157B2 (en) * 2015-01-03 2019-01-08 International Business Machines Corporation Detect annotation error by segmenting unannotated document segments into smallest partition
    US10255045B2 (en) 2015-10-28 2019-04-09 Apple Inc. Graphical representation of data in a program code editor
    US9727317B2 (en) * 2015-11-04 2017-08-08 International Business Machines Corporation Optimized compilation using an auto-tuned compiler as a service

    Also Published As

    Publication number Publication date
    GB202007394D0 (en) 2020-07-01
    US20190146764A1 (en) 2019-05-16
    JP2021502632A (ja) 2021-01-28
    CN111316232A (zh) 2020-06-19
    JP7196171B2 (ja) 2022-12-26
    WO2019092565A1 (en) 2019-05-16
    US10613844B2 (en) 2020-04-07

    Similar Documents

    Publication Publication Date Title
    DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
    DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
    US11334692B2 (en) Extracting a knowledge graph from program source code
    DE102020110536A1 (de) Verfahren, Systeme, Herstellungsgegenstände und Vorrichtungen für ein kontext- und komplexitätsbewusstes Empfehlungssystem zur verbesserten Softwareentwicklungseffizienz
    DE112018005167T5 (de) Aktualisieren von trainingsdaten
    DE112018001876T5 (de) Adaptive beurteilung von metabeziehungen in semantischen graphen
    DE112011100258T5 (de) Durchführen von aggressiven Codeoptimierungen mit einer Fähigkeit zum Annulieren derdurch die aggressiven Optimierungen vorgenommenen Änderungen
    DE112012003780T5 (de) Verknüpfen von Code für eine erweiterte binäre Anwendungsschnittstelle (Application binary Interface (ABI)) mit Entschlüsselungszeit-Anweisungsoptimierung
    DE112012003716T5 (de) Erzeugen von kompiliertem Code, der Registeraktivität angibt
    DE112020002110T5 (de) Ressourcenarme entitätsauflösung mit transfer learning
    DE112012004238T5 (de) Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen
    DE112019002235T5 (de) Einbinden eines wörterbuch-bearbeitungssystems in ein text mining
    DE112020005095T5 (de) Automatische trennung und extraktion von tabellendaten unter verwendung von maschinellem lernen
    DE112021004694T5 (de) Trainieren eines frage-antwort-dialogsystems zum vermeiden von gegnerischen angriffen
    DE112021002820T5 (de) Dynamische automatisierung einer auswahl von pipeline-artefakten
    DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
    DE102022133809A1 (de) Verfahren, systeme, herstellungsartikel und einrichtungen zur identifizierung von codesemantik
    DE112017005015T5 (de) Verarbeiten von gleichgeordneten Aufrufen (SIBLING CALLS)
    DE112020000805T5 (de) Kontrolle für „ziffernvalidierungsüberprüfung“ in anweisungsausführung
    DE102022129946A1 (de) Verfahren und vorrichtungen zum bestimmen eines verfeinerten kontexts für softwarefehlererkennung und - korrektur
    DE112021003583T5 (de) Sprachenübergreifendes transferlernen ohne trainingsbeispiele
    US11573790B2 (en) Generation of knowledge graphs based on repositories of code
    DE102014116744A1 (de) Management von Informationstechnologieressourcen
    DE102016204594A1 (de) Abgleichen von datenquellen ohne tags mit datenanalyseanwendungen ohne tags
    DE112021003274T5 (de) Ressourcenzuordnung zum optimieren von hyperparametern bei umfangreichen deep-learning-arbeitslasten

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R079 Amendment of ipc main class

    Free format text: PREVIOUS MAIN CLASS: G06F0009440000

    Ipc: G06F0008410000

    R016 Response to examination communication
    R084 Declaration of willingness to licence