JP7393404B2 - コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム - Google Patents

コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム Download PDF

Info

Publication number
JP7393404B2
JP7393404B2 JP2021155593A JP2021155593A JP7393404B2 JP 7393404 B2 JP7393404 B2 JP 7393404B2 JP 2021155593 A JP2021155593 A JP 2021155593A JP 2021155593 A JP2021155593 A JP 2021155593A JP 7393404 B2 JP7393404 B2 JP 7393404B2
Authority
JP
Japan
Prior art keywords
source file
subset
source
files
compilation
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.)
Active
Application number
JP2021155593A
Other languages
English (en)
Other versions
JP2021192318A (ja
Inventor
桓 州 武
歓 王
威 周
涛 駱
翔 藍
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2021192318A publication Critical patent/JP2021192318A/ja
Application granted granted Critical
Publication of JP7393404B2 publication Critical patent/JP7393404B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/49Partial evaluation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本開示は、コンピュータ技術に関し、より具体的には、コンパイル方法、コンパイル装置、電子デバイス、コンピュータ可読記憶媒体及びプログラムに関し、ソースファイルコンパイル分野及びディープラーニング分野などに利用することができる。
C++言語は静的型言語であり、例えば、フォーマットが.CCであるソースファイルがコンパイルによってバイナリファイルを生成して実行または使用する必要がある。C++言語のソースファイルをコンパイルする場合、各ソースファイルは1つのコンパイルユニットとみなしてコンパイラでコンパイルされ、各コンパイルユニット毎にオブジェクトファイルが生成され、最終的にリンカでバイナリオブジェクトにリンクされる。コンパイル過程には、主にコンパイラによってコンパイルユニットをコンパイルしてオブジェクトファイルを取得する過程に時間がかかる。一般的には、コンパイルユニットの数は、プロジェクトにおけるソースファイルの数と一致する。大規模なプロジェクトでは、コンパイルユニットは、数千個以上にあることが多い。各コンパイルユニット毎に、コンパイラを起動し、ディスク上のソースファイルおよび依存ファイルを読み込み、コンパイルによって得られたオブジェクトファイルをディスクに書き込む必要がある。また、最終的にオブジェクトファイルにリンクする際に、リンカは、コンパイルユニット毎に対する作成されたオブジェクトファイルをディスクから再度読み込む必要がある。このため、コンパイルユニットが多過ぎると、コンパイラの起動やディスクの読み書きにかかる時間が累積的に増加し、コンパイルに冗長な時間を要する。類似的には、CUDAのソースファイルに対するコンパイルにも上記の問題が存在する。
しかしながら、従来のソースファイルためのコンパイル技術は、ソースファイル毎に個別にコンパイルするか、又はソースファイルの一部を非常に概略的にマージしてコンパイルするだけであり、プロジェクトに対する必要なコンパイルの回数が多くなり、ソースファイルが多い大型プロジェクトに適用できないだけでなく、ソースファイルが増加又は減少した場合に異常が発生し、ユーザの要求を満たすことが困難であった。
本開示の実施例によれば、コンパイル方法、コンパイル装置、電子デバイス、コンピュータ可読記憶媒体、及びコンピュータプログラムが提供される。
本開示の第1の局面では、同じ類型のソースファイルを含むソースファイルセットを取得することと、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせることと、各ソースファイルサブセットを全体としてコンパイルすることと、を含むコンパイル方法が提供される。
本開示の第2の局面では、同じ類型のソースファイルを含むソースファイルセットを取得するように配置される取得モジュールと、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせるように配置される第1の組合せモジュールと、各ソースファイルサブセットを全体としてコンパイルするように配置される第1のコンパイルモジュールと、を含むコンパイル装置が提供される。
本開示の第3の局面では、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に接続されたメモリと、を含み、メモリには、少なくとも一つのプロセッサによって実行可能な命令が記憶され、この命令は、少なくとも一つのプロセッサによって実行され、少なくとも一つのプロセッサに本開示の第1の局面による方法を実行させることを可能にする電子デバイスが提供される。
本開示の第4の局面では、コンピュータに本開示の第1の局面による方法を実行させるためのコンピュータ命令を記憶した非一時的コンピュータ可読記憶媒体が提供される。
本開示の第5の局面では、プロセッサによって実行されたときに、本開示の第1の局面による方法を実現するコンピュータプログラムが提供される。
本開示による技術によれば、コンパイル方法が提供され、当該方法の技術案によって、予め定められた組合せ規則に従って、複数のソースファイルを含むプロジェクトにおけるソースファイルを組み合わせてコンパイルすることができ、コンパイル回数を減らすことによって、コンパイル効率を効果的に向上させ、コンパイル時間を短縮することができる。
発明の概要に記載された内容は、本開示の実施例の主要な特徴または重要な特徴を限定することを意図したものではなく、また本開示の範囲を限定するものでもないことを理解されたい。本開示の他の特徴は、以下の説明から容易に理解されるであろう。
図面を組み合わせて、本開示の例示的な実施例をより詳細に説明することにより、本開示の上記および他の目的、特徴、利点はより明らかになるであろう。本開示の例示的な実施例において、同じ参照番号が同じ部品を示す。図面は、本技術案をより良く理解するためのものであり、本開示を限定するものではないことを理解されたい。
本開示のいくつかの実施例におけるコンパイル方法が実現されるコンパイル環境100の概略的なブロック図を示す。 本開示の実施例によるコンパイル方法200のフローチャートを示す。 本開示の実施例によるコンパイル方法300のフローチャートを示す。 本開示の実施例によるコンパイル装置400の概略的なブロック図を示す。 本開示の実施例を実施するための例示的な電子デバイス500の概略的なブロック図を示す。
各図中、同一又は対応符号は、同一又は対応部分を示す。
以下、図面を参照して、本開示の好ましい実施例をより詳細に説明する。本開示の好ましい実施例が図面に示されてきたが、本開示は、様々な形態で実現されてよく、ここで説明される実施例に限定されるものではないことが理解されるべきである。むしろ、これらの実施例は、本開示をより明瞭かつ完全にするために提供され、本開示の範囲を当業者に完全に伝えることができる。
「含む」及びその変形という本明細書で使用される用語は、非限定的な意味、すなわち、「含むが、これに限定されない」という意味で使用される。特に明記しない限り、「または」という用語は、「および/または」を意味する。「基づいて」という用語は、「少なくとも部分的に基づいて」を意味する。「1つの例示的な実施例」及び「1つの実施例」という用語は、「少なくとも1つの例示的な実施例」を意味する。「別の実施例」という用語は、「少なくとも1つの別の実施例」を意味する。「第1」、「第2」などの用語は、異なるまたは同一の対象を指すことができる。他の明示的および暗黙的な定義も、以下に含まれる場合がある。
背景技術で説明したように、従来のソースファイルのコンパイル技術は、ソースファイルごとにそれぞれにコンパイルするか、又はソースファイルの一部のみを非常に概略的にマージしてコンパイルするため、プロジェクトに対する必要なコンパイルの回数が多くなり、ソースファイルが多い大規模なプロジェクトに適用できないだけでなく、ソースファイルが増加又は減少した場合にも異常が発生し、ユーザの要求を満たすことが困難であった。
例えば、従来技術では、ソースファイルの組合せをサポートできるツールはCMAKEのみである。CMAKEを用いる場合は、ターゲット(target)においてUNITY_BUILD属性をONに設定することにより実現する。しかし、CMAKEを採用する方式は、大規模なプロジェクトに対して良好な効果を奏することができず、これは主に、ソースファイル間の複数の符号重複定義の問題によって制限され、ソースファイルを組み合わせる際に起こり得るコンフリクトに対処できず、ソースファイルの追加や削除の際に不具合が生じるため、広く利用されていない。
上記問題及び他の潜在的な問題のうちの1つまたは複数の問題を少なくとも部分的に解決するために、本開示の実施例は、本開示の実施態様による技術案によって、予め定められた組合せ規則に従って、複数のソースファイルを含むプロジェクトにおけるソースファイルを組み合わせてコンパイルすることができ、コンパイル回数を減らすことによって、コンパイル効率を効果的に向上させ、コンパイル時間を短縮し、ユーザ体験を向上させることができるコンパイル方法を提供する。
図1は、本開示のある実施例におけるコンパイル方法が実現されるコンパイル環境100の概略ブロック図を示す。本開示の1つ以上の実施例によれば、コンパイル環境100はクラウド環境であり得る。図1に示すように、コンパイル環境100は、コンピューティングデバイス110を含む。コンパイル環境100では、例えば、コンパイルされることが望まれるソースファイルから構成されるソースファイルセット、ソースファイルセット内のソースファイルをコンパイルするために必要とされる依存ファイル、およびソースファイルセットに関連する予め定められた組合せ規則の入力データ120を含み、コンピューティングデバイス110の入力としてコンピューティングデバイス110に提供され得る。コンピューティングデバイス110は、予め定められた組合せ規則に基づいてソースファイルセットに含まれるソースファイルを1つまたは複数のソースファイルサブセットに組合せ、次いで、それが含むコンパイラ(図示せず)を使用して、依存ファイルを使用して、組み合わせたソースファイルをコンパイルすることができる。コンパイル過程では、各ソースファイルサブセットについて、コンピューティングデバイス110は、それを全体としてコンパイルする。言い換えると、各ソースファイルサブセットについて、いくつのソースファイルを含むかにかかわらず、コンピューティングデバイス110は、コンパイラを1回だけ起動すればよい。
なお、コンパイル環境100は例示的なものにすぎず、限定的なものではなく、拡張可能であり、より多くのコンピューティングデバイス110を含み、コンピューティングデバイス110により多くの入力データ120を提供し、それにより、より多くのユーザがより多くのコンピューティングデバイス110を同時に利用し、さらにはより多くの入力データ120によってソースファイルセットにおけるソースファイルを同時にまたは非同時にコンパイルする要求を満たすことができる。
図1に示されるコンパイル環境100では、コンピューティングデバイス110への入力データ120の入力は、ネットワークを介して行われ得る。
図2は、本開示の実施例によるコンパイル方法200のフローチャートを示す。具体的には、コンパイル方法200は、図1に示されるコンパイル環境100におけるコンピューティングデバイス110によって実行され得る。コンパイル方法200は、図示されていない追加の操作及び/または省略可能な操作を含むことができ、本開示の範囲はこの点において限定されない。
ブロック202で、コンピューティングデバイス110は、ソースファイルセットを取得する。本開示の1つ以上の実施例によれば、コンピューティングデバイス110は、入力データ120を受信することによってソースファイルセットを取得し、そして、ソースファイルセットは、同じ類型のソースファイルを含む。
例えば、ソースファイルの類型は、C++言語用のソースファイル及びCUDAに対するソースファイルを含むことができる。1つのプロジェクトには、C++言語用のソースファイルとCUDAに対するソースファイルが同時に含まれるが、異なる類型のソースファイルが異なるコンパイラを使用する必要があるため、異なる類型のソースファイルを組み合わせて1つのコンパイラだけを用いて翻訳することはできない。従って、ソースファイルセットは、同じ類型のソースファイルを含む必要がある。ソースファイルセットが異なる類型のソースファイルを含む場合、ソースファイルの類型に従ってソースファイルセットを複数のサブセットに分割することができ、各サブセットは、いずれも同じ類型のソースファイルを含む。
ブロック204では、コンピューティングデバイス110は、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせる。本開示の1つ以上の実施例によれば、予め定められた組合せ規則は、コンパイルの前に、コンピューティングデバイス110が、コンパイル配置に従ってソースファイルセットにおけるソースファイルを使用して複数のソースファイルを含み得るコンパイルユニットを生成し、コンパイルユニットを単位として、コンパイラを用いて、各コンパイルユニットをコンパイルする、というコンパイル配置とみなされることができる。
本開示の1つ以上の実施例によれば、コンピューティングデバイス110は、コンパイルシステム構成を構築するための操作を実行してもよい。例えば、C++プロジェクトは、例えばMAKE、MSVC及びNINJAという異なるビルドシステムを用いて、例えばLinux(登録商標)、Windows(登録商標)及びMacOS(登録商標)という異なるプラットフォームでコンパイルされることができる。クロスプラットフォームで迅速に正常にコンパイルするために、通常、例えばCMAKEというクロスプラットフォームのコンパイルツールを使用し、これにより、簡単なステートメントで全てのプラットフォームのコンパイル過程を記述することができる。しかし、コンパイル用の配置としてそのまま用いることができるのは、各ビルドシステム毎に個別に用いられる配置であり、CMAKEが用いるCMakeLists.txtをそのままコンパイルに用いることができない。このとき、コンピューティングデバイス110は、CMAKEのCMakeLists.txtという配置から各プラットフォームに対応するビルドシステムの配置へのビルドコンパイラシステム配置を設計する操作を実行することができる。
本開示のいくつかの実施例によれば、コンピューティングデバイス110は、文法レベルで汎用的なincludeメカニズムを使用して、ソースファイルセットにおけるソースファイルをソースファイルサブセットに組み合わせることができる。
本開示のいくつかの実施例によれば、ソースファイルセットのすべてのソースファイルは、異なるソースファイルサブセットに組み合わせることができる。この場合、予め定められた組合せ規則に基づいてソースファイルセットにおけるソースファイルを組み合わせた後、ソースファイルは単独では存在せず、ソースファイルサブセットに組み合わせられる。
本開示の他のいくつかの実施例によれば、ソースファイルセットのうちのソースファイルの例えば80%~95%は、異なるソースファイルサブセットに組み合わせられることができる。この場合、予め定められた組合せ規則に基づいてソースファイルセットのソースファイルを組み合わせた後に、いくつかのソースファイルがソースファイルサブセットに組み合わせていないことが存在する。
本開示の1つ以上の実施例によれば、予め定められた組合せ規則は、ソースファイルセットにおけるソースファイルの属性のうちの1つ以上に基づいて生成されることができ、これらの属性は、例えば、ソースファイルのコンパイル時間、ソースファイルのサイズ、ソースファイルのコンパイル後のサイズ、ソースファイルの組合せコンパイル際のコンフリクト状況を含むことができる。
例えば、いくつかのソースファイルのコンパイルに要する時間が例えば3~5秒程度と短い場合、例えば30~50個の大量のこのようなソースファイルをソースファイルサブセットに組み合わせることができる。逆に、あるソースファイルをコンパイルすることに要する時間が例えば1~2分と長い場合、このソースファイルを他のファイルとソースファイルサブセットに組み合わせないことができる。
また例えば、いくつかのソースファイルのサイズが大きい場合、又はコンパイル後に得られたオブジェクトファイルのサイズが大きい場合、これらのソースファイルを他のファイルとソースファイルサブセットに組み合わせなくてもよいし、これらのソースファイルの少量のソースファイルのみをソースファイルサブセットに組み合わせてもよい。
また、任意の2つ以上のソースファイルがソースファイルサブセットに組み合わされた後、当該ソースファイルサブセットをコンパイルする際にコンフリクトにより正常にコンパイルできない場合、これらのソースファイルを1つのソースファイルサブセットに組み合わせることを避けるべきである。本開示の1つ以上の実施例によれば、予め定められた組合せ規則に基づいてソースファイルをソースファイルサブセットに組み合わせた後、ソースファイルサブセットに対して実際のコンパイルまたはシミュレートされたコンパイルを行うことができ、コンフリクトにより正常にコンパイルできない場合、予め定められた組合せ規則を補正してコンフリクトを回避することができる。
本開示の1つ以上の実施例によれば、ソースファイルセット中の複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせることは、予め定められた組合せ規則によって指示される少なくとも1つの規則指定ソースファイルサブセットに基づいて、複数のソースファイルを、対応的な規則指定ソースファイルサブセットのサブセットである少なくとも1つのソースファイルサブセットに組み合わせることを含む。例えば、予め定められた組合せ規則は、ソースファイルA~Zの合計26個のソースファイルのうちのソースファイルA~Gの合計7個のソースファイルを1つのソースファイルサブセットに組み合わせることを指示することができる。このとき、ソースファイルセットを調整することにより、ソースファイルCが削除されても、ソースファイルA、B及びD~Gを1つのソースファイルサブセットに組み合わせることもでき、これは、組合せることが許容された複数のソースファイルの一部のソースファイルを削除して組み合わせることが、通常、コンフリクトが生じないためである。
大規模プロジェクトでは、ソースファイルの増減の繰り返しの頻度が速く、各開発者がそれぞれ異なるソースファイルを担当するが、ソースファイルの組合せ規則は1箇所だけであることが多く、これにより、予め定められた組合せ規則におけるソースファイルがリネームまたは削除されたことを引き起こす可能性が高く、予め定められた組合せ規則の効果が失われる。したがって、本開示の1つ以上の実施例によれば、指定されたファイル組合せ規則から生成された規則指定ソースファイルセットと、実際の情報に応じて規則のソースファイルをヒットし、規則指定ソースファイルセットのサブセットに属する規則ヒットソースファイルセット、という2つの辞書セットを使用して、ソースファイルセットをそれぞれ記憶することができる。2つのソースファイルセットにより、ソースファイルを組み合わせる際にソースファイルの増減を効果的に処理することができ、規則の頻繁な変化を回避できる。
本開示の1つ以上の実施例によれば、予め定められた組合せ規則は、例えば、数十の規則を含むことができ、従って、この予め定められた組合せ規則に基づいて、ソースファイルセットのソースファイルは、数十のソースファイルサブセットに組み合わせられることができる。また、各ソースファイルサブセットには、例えば、数個又は数十個のソースファイルが含まれることができる。予め定められた組合せ規則に含まれる規則の数、及び予め定められた組合せ規則に従って特定されるソースファイルサブセットにおけるソースファイルの数が、例示のみであり、本開示の保護範囲を限定しないことが理解されるべきである。
ブロック206において、コンピューティングデバイス110は、各ソースファイルサブセットを全体としてコンパイルする。本開示の1つ以上の実施例によれば、前記したように、コンピューティングデバイス110がソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせた後、各ソースファイルサブセットは、1つのコンパイルユニットとしてコンパイルされる。言い換えれば、各ソースファイルサブセットについて、コンパイラを1回だけ起動すればよい。したがって、ソースファイルセットのソースファイルごとにコンパイラを1回だけ起動する場合に比べて、本開示の実施例による技術案によって、コンパイラの起動回数を顕著に減らすことができ、コンパイルの回数を減らすことができる。
図3は、本開示の実施例によるコンパイル方法300のフローチャートを示す。具体的には、コンパイル方法300は、図1に示されるコンパイル環境100内のコンピューティングデバイス110によって実行されてもよい。コンパイル方法300が、図示されていない追加の操作及び/または省略可能な操作を含むことができ、本開示の範囲はこの点において限定されない。
ブロック302で、コンピューティングデバイス110は、ソースファイルセットを取得する。前述のように、本開示の1つ以上の実施例によれば、コンピューティングデバイス110は、入力データ120を受信することによってソースファイルセットを取得し、ソースファイルセットは、同じ類型のソースファイルを含む。ブロック302に係るステップの具体的な内容は、ブロック202に係るステップの具体的な内容と同じであり、ここでは贅言しない。
ブロック304で、コンピューティングデバイス110は、ソースファイルセットの類型に基づいて、ソースファイルセットに関連する予め定められた組合せ規則を特定する。本開示の1つ以上の実施例によれば、1つのプロジェクトには、例えばC++言語用のソースファイルとCUDAに対するソースファイルが同時に含まれてもよく、異なる類型のソースファイルに対して、使用されるコンパイラが異なるため、組合せ規則も異なる。このとき、コンピューティングデバイス110は、ソースファイルセットに含まれたソースファイルの類型に基づいて、C++言語用のソースファイルに対する予め定められた組合せ規則を使用するか、CUDAのソースファイルに対する予め定められた組合せ規則を使用するかを特定し得る。ブロック304に係るステップは、選択的なステップであり、プロジェクトに1つの類型のソースファイルのみが含まれる場合に、ソースファイルセットの類型に基づいてソースファイルセットに関連する予め定められた組合せ規則を特定する必要がなく、方法300にブロック304が含まれなくてもよいことを理解されたい。
ブロック306で、コンピューティングデバイス110は、予め定められた組合せ規則に基づいて、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを、ヌルファイルを含む少なくとも1つのソースファイルサブセットとして生成する。本開示の1つ以上の実施例によれば、コンピューティングデバイス110が実際的にソースファイルセットに関連する予め定められた組合せ規則に基づいてソースファイルセットの複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせる前に、コンピューティングデバイス110は、予め予め定められた組合せ規則に基づいて、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを生成することができる。この生成されるソースファイルサブセットは、実際のソースファイルに対することではなく、予め定められた組合せ規則によって指定されたコンテンツのみに基づいて生成されるので、本願では規則指定ソースファイルサブセットと呼ばれる。
本開示の1つ以上の実施例によれば、規則指定ソースファイルサブセットを予め生成することは、ソースファイルサブセット内のソースファイルと、組み合わされた少なくとも1つのソースファイルサブセットとが変化する場合に、処理を簡略化できることを目的とする。規則指定ソースファイルサブセットが予め生成されたので、ソースファイルサブセットにおけるソースファイルをソースファイルサブセットに組み合わせた後、2つのサブセットのコンテンツが同一であるかどうかを直接に比較することができ、その後、組み合わされたソースファイルサブセットと以前のソースファイルサブセットとを同様に比較し、サブセットのコンテンツが変化したかどうかを特定することができる。ブロック306に係るステップは、選択的なステップであり、主に処理を簡略化するためのものであり、そのため、方法300にブロック306が含まれなくてもよいことを理解されたい。
ブロック308で、コンピューティングデバイス110は、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせる。ブロック308に係るステップの具体的な内容は、ブロック204に係るステップの具体的内容と同じであり、ここでは贅言しない。
ブロック310で、コンピューティングデバイス110は、ソースファイルサブセットに含まれるコンテンツが、組み合わされた既存のソースファイルサブセットと異なるかどうかを特定する。コンピューティングデバイス110が、ソースファイルサブセットに含まれるコンテンツが組み合わせた既存のソースファイルサブセットと異なることを特定すると、方法300は、コンピューティングデバイス110が、ソースファイルサブセットに含まれるコンテンツが組み合わせたある既存のソースファイルサブセットと同じであることを特定すれば、操作を行う必要がない、というブロック312に進む。
本開示の1つ以上の実施例によれば、コンピューティングデバイス110がソースファイルをソースファイルサブセットに組み合わせる場合、予定の規則に従って、組み合わせたソースファイルサブセットに名称を特定することができる。コンピューティングデバイス110は、ソースファイルのパスに従ってソースファイルサブセットの名称を特定することができる。例えば、ソースファイルサブセットに組み合わせる複数のソースファイルのパスがすべてA-B-Cである場合、パスに例えば数の接尾辞を追加する形で、このソースファイルサブセットに例えばA-B-C-1またはA-B-C-2という名称を特定することができる。組み合わせに用いられるソースファイルが予め定められた組合せ規則によって指示されるので、ソースファイルサブセットの名称は、予め定められた組合せ規則に基づいて生成されると考えられる。
本開示の1つ以上の実施例によれば、コンピューティングデバイス110は、ソースファイルサブセットの名称が、組み合わせた既存のソースファイルサブセットの名称と異なることによって、ソースファイルサブセットに含まれるコンテンツが、組み合わせた既存のソースファイルサブセットと異なると特定することができ、これは、ソースファイルサブセットの名称がいずれも、組み合わせた既存のソースファイルサブセットの名称と異なる場合、当該ソースファイルサブセットのコンテンツが、全ての既存のソースファイルサブセットのコンテンツと同じではないためである。コンピューティングデバイス110が、ソースファイルサブセットの名称が、組み合わせたある既存のソースファイルのサブセットの名称と同じであると特定した場合、コンピューティングデバイス110は、この2つのサブセットのコンテンツが同じであるかどうかをさらに特定することができる。例えば、プロジェクトには、追加ビルドにより複数のコンパイルを行う場合、毎回に生成されるソースファイルサブセットが同じ名称であってもタイムスタンプが変化し、これにより、タイムスタンプが異なるが名称が同じであるソースファイルサブセットのコンテンツが同じであるかどうかを判定することができる。コンテンツが同じであれば、操作を行う必要がない;コンテンツが異なる場合、新しいタイムスタンプを有するソースファイルサブセットをコンパイルする必要がある。
具体的には、ビルドシステムの多くは、開発の便宜上、追加コンパイルの戦略が提供され、すなわち、前回のコンパイルを基礎とし、後に変更したソースファイルのみをコンパイルする。追加コンパイルをトリガするか否かを判定する一般的な方法は、ファイルのタイムスタンプを判定し、タイムスタンプが前回のコンパイルよりも遅い場合にトリガする。単純に予定の規則に従ってファイルを組み合わせると、その都度タイムスタンプが変化してしまい、不要な追加コンパイルに時間がかかる。したがって、本開示の1つ以上の実施例によれば、初期化の指定規則期間に、まず、組み合わせたソースファイルサブセットに対して存在性を検査し、当該ソースファイルサブセットが存在しない場合、ソースファイルサブセットとしてヌルファイルを作成し、そうでない場合は何も処理しない。全てのソースファイルサブセットが生成された後、組み合わされたソースファイルサブセットと実際のソースファイルサブセットのコンテンツとを比較することができ、コンテンツが一致しない場合、上書きされ得るし、そうでない場合、何も処理しない。これにより、冗長追加コンパイルの問題を回避することができる。
ブロック312において、コンピューティングデバイス110は、ソースファイルサブセットと同じ名称を有する、組み合わせた既存のソースファイルサブセットを削除する。本開示の1つ以上の実施例によれば、コンピューティングデバイス110が、ソースファイルサブセットに含まれるコンテンツが組み合わせた既存のソースファイルサブセットと異なると特定する場合、後続のコンパイルは、新たに組み合わせたソースファイルサブセットに対して行われるべきである。このとき、コンフリクトを避けるために、ソースファイルサブセットが、ある組み合わせた既存のソースファイルサブセットと同じ名称を有する場合、コンピューティングデバイス110は、ソースファイルサブセットと同じ名称を有する組み合わせた既存の元のファイルサブセットを削除することができる。ブロック312に係るステップが選択的なステップであり、ソースファイルサブセットがいずれも、組み合わされた既存のソースファイルサブセットと同じ名称を有しない場合、組み合わされた既存のソースファイルサブセットを削除する必要がなく、方法300にブロック312が含まなくてもよいことを理解されたい。
ブロック314で、コンピューティングデバイス110は、各ソースファイルサブセットを全体としてコンパイルする。本開示の1つ以上の実施例によれば、ブロック314は、コンピューティングデバイス110が、ソースファイルセットにおけるソースファイルをソースファイルサブセットに組み合わせ、選択的に組み合わせたソースファイルサブセットと同じ名称を有する、組み合わせた既存のソースファイルサブセットを削除した後に、保留された各ソースファイルサブセットを全体としてコンパイルすることを指す。ブロック314に係るステップの具体的内容は、ブロック206に係るステップの具体的内容と同じであり、ここでは贅言しない。
ブロック316で、コンピューティングデバイス110は、ソースファイルセットにおける、少なくとも1つのソースファイルサブセットに含まれないソースファイルをコンパイルする。本開示の1つ以上の実施例によれば、予め定められた組合せ規則に基づいてソースファイルセットにおけるソースファイルを組み合わせた後、いくつかのソースファイルをソースファイルサブセットに組み合わせていないいくつかのソースファイルがある可能性がある。この場合も、これらソースファイルをコンパイルする必要がある。
本開示の1つ以上の実施例によれば、組み合わせた複数のソースファイルサブセット及び少なくとも1つのソースファイルサブセットに含まれないソースファイルに対するコンパイルは、任意の順序で又は同期して行われ得る。
以上、図1乃至図3を参照して、本開示のいくつかの実施例に係るコンパイル方法が実現されるコンパイル環境100、本開示の実施例によるコンパイル方法200及び本開示の実施例によるコンパイル方法300の関連内容を説明した。上記の説明は、本開示に記載された内容をよりよく示すためのものであり、いかなる方法で限定するものではないことを理解されたい。
本開示の上記の様々な図面に用いられている様々な素子の数および物理量の大きさは、単なる例であり、本開示の保護範囲を制限するものではないことを理解されたい。上述した数および大きさは、本開示の実施形態の正常な実施に影響を与えることなく、需要に応じて任意に設置され得る。
以上、図1乃至図3を参照して、本開示の実施形態によるコンパイル方法200及びコンパイル方法300の詳細を説明した。以下、図4を参照して、コンパイル装置の各ブロックについて説明する。
図4は、本開示の実施例によるコンパイル装置400の概略的なブロック図である。図4に示すように、コンパイル装置400は、同じ類型のソースファイルを含むソースファイルセットを取得するように配置される取得モジュール410と、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせるように配置される第1の組合せモジュール420と、各ソースファイルサブセットを全体としてコンパイルするように配置される第1のコンパイルモジュール430と、を含む。
1つ以上の実施例では、コンパイル装置400は、ソースファイルセットの類型に基づいて、ソースファイルセットに関連する予め定められた組合せ規則を特定するように配置される第1の特定モジュール(図示せず)をさらに含む。
1つ以上の実施例では、予め定められた組合せ規則は、ソースファイルのコンパイル時間、ソースファイルのサイズ、ソースファイルのコンパイル後のサイズ、ソースファイルの組合せコンパイル際のコンフリクト状況、のうちの少なくとも1つに基づいて生成される。
1つ以上の実施例では、第1の組合せモジュール420は、予め定められた組合せ規則によって指示される少なくとも1つの規則指定ソースファイルサブセットに基づいて、複数のソースファイルを、対応的な規則指定ソースファイルサブセットのサブセットである少なくとも1つのソースファイルサブセットに組み合わせるように配置される第2の組合せモジュール(図示せず)を含む。
1つ以上の実施例では、コンパイル装置400は、予め定められた組合せ規則に基づいて、ヌルファイルを含む少なくとも1つのソースファイルサブセットとして、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを生成するように配置される生成モジュール(図示せず)をさらに含む。
1つ以上の実施例では、第1のコンパイルモジュール430は、ソースファイルサブセットに含まれるコンテンツが組み合わされた既存のソースファイルサブセットと異なると特定することに基づいて、ソースファイルサブセットを全体としてコンパイルするように配置される第2のコンパイルモジュール(図示せず)を含む。
1つ以上の実施例では、第2のコンパイルモジュールは、ソースファイルサブセットの名称が、組み合わされた既存のソースファイルサブセットの名称と異なると特定するように配置される第2の特定モジュール(図示せず)を含む。
1つ以上の実施例では、ソースファイルサブセットの名称は、予め定められた組合せ規則に基づいて生成される。
1つ以上の実施例では、コンパイル装置400は、ソースファイルサブセットと同じ名称を有する組み合わせた既存のソースファイルサブセットを削除するように配置される削除モジュール(図示せず)をさらに含む。
1つ以上の実施例では、コンパイル装置400は、ソースファイルセットにおける、少なくとも1つのソースファイルサブセットに含まないソースファイルをコンパイルするように配置される第3のコンパイルモジュール(図示せず)をさらに含む。
図1乃至図4を参照して説明したように、本開示の実施形態による技術案は、従来技術に比べて多くの長所を有する。例えば、本開示の実施例による技術案によって、予定の組み合わせ規則に従って複数のソースファイルを含むプロジェクトにおけるソースファイルを組み合わせてコンパイルすることができ、コンパイル回数を減らすことによってコンパイル効率を効果的に向上させ、コンパイルにかかる時間を減らして、ユーザ体験を向上させることができる。実験を通して、本開示の実施形態による技術案をディープランニングフレームワークに適用する場合、ソースファイルに対するコンパイル時間を30%以上減少させることができるため、コンパイル効率を顕著に向上させることができる。また、本開示の実施形態による技術案は、例えばLinux、Windows、MacOSという多様なプラットフォームに適用可能であり、例えばMAKE、Ninja、MSVCという多様なビルドシステムに適用可能であり、汎用性が高い。
本開示の実施例によれば、本開示は、電子デバイス、コンピュータ可読記憶媒体、およびコンピュータプログラムをさらに提供している。
図5は、本開示の実施例を実施するための例示的電子デバイス500の概略ブロック図を示す。例えば、図1に示すコンピューティングデバイス110および図4に示すコンパイル装置400は、電子デバイス500によって実施されることができる。電子デバイス500は、例えば、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータである。電子デバイスは、例えば、パーソナルデジタルプロセッシング、携帯電話、スマートフォン、ウェアラブルデバイス、及び他の類似なコンピューティングデバイス等、様々な形態のモバイルデバイスであってもよい。本明細書に示される部品、それらの接続及び関係、並びにそれらの機能は、単なる例示であり、本明細書に記載及び/又は請求される本開示の実施を限定しない。
図5に示されるように、デバイス500は、リードオンリーメモリ(ROM)502に記憶されたコンピュータプログラム、又は記憶ユニット508からランダムアクセスメモリ(RAM)503にロードされたコンピュータプログラムに従って様々な適切な動作及び処理を実行することができるコンピューティングユニット501を含む。RAM503には、デバイス500の操作に必要な各種プログラムやデータを記憶するもできる。コンピューティングユニット501、ROM502、及びRAM503は、バス504を介して相互に接続されている。入出力(I/O)インタフェース505もバス504に接続されている。
デバイス500における複数の部品は、I/Oインタフェース505に接続されており、例えばキーボード、マウスなどの入力ユニット506と、例えば各種のディスプレイ、スピーカなどの出力ユニット507と、例えば磁気ディスク、光ディスクなどの記憶ユニット508と、例えばネットワークカード、モデム、無線通信送受信機などの通信ユニット509と、を含む。通信ユニット509は、デバイス500が、例えばインターネットなどのコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して、他の機器と情報/データを交換することを可能にする。
コンピューティングユニット501は、処理および計算能力を有する様々な汎用および/または専用処理コンポーネントであることができる。コンピューティングユニット501のいくつかの例示は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、様々な専用人工知能(AI)コンピューティングチップ、様々な機械学習モデルアルゴリズムを実行するコンピューティングユニット、デジタルシグナルプロセッサ(DSP)、および任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。コンピューティングユニット501は、例えば方法200および300のような上記に記載の各方法及び処理を実行する。例えば、いくつかの実施例において、方法200および300のいずれかは、コンピュータソフトウェアプログラムとして実現され、例えば記憶ユニット508などの機械可読媒体に有形に組み込まれる。いくつかの実施例において、コンピュータプログラムの一部又は全部は、ROM502及び/又は通信ユニット509を介してデバイス500にロード及び/又はインストールされてよい。コンピュータプログラムがRAM503にロードされ、コンピューティングユニット501によって実行されると、上記に記載の方法200および300のいずれかの1つまたは複数のステップを実行することができる。あるいは、他の実施例では、コンピューティングユニット501は、他の任意の適切な方式で(例えば、ファームウェアを用いて)方法200および300のいずれかを実行するように配置されることができる。
本明細書で説明したシステムおよび技術の様々な実施態様は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、負荷プログラマブル論理デバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらの様々な実施例は、1つまたは複数のコンピュータプログラム内で実施されることを含み、当該1つまたは複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行および/または解釈され、当該プログラマブルプロセッサは、専用または汎用のプログラマブルプロセッサであり、記憶システム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信し、データおよび命令を当該記憶システム、少なくとも1つの入力装置、および少なくとも1つの出力装置に送信する。
本開示の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組合せで書かれてもよい。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサ又はコントローラに提供されてもよく、これにより、プログラムコードがプロセッサ又はコントローラによって実行されると、フローチャート及び/又はブロック図において特定された機能/動作が実施される。プログラムコードは、完全にマシンで、部分的にマシンで、独立型ソフトウェアパッケージとして部分的にマシンで、部分的にリモートマシンで、または完全にリモートマシンもしくはサーバで実行され得る。
本開示の文脈において、機械可読媒体は、命令実行システム、装置、またはデバイスによる使用のための、またはそれらと関連して使用されるプログラムを含み、または記憶することができる有形媒体であり得る。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であり得る。機械可読媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体システム、装置、もしくはデバイス、または上記の任意の好適な組み合わせを含み得るが、これらに限定されない。機械可読記憶媒体のより具体的な例示は、1つ以上の配線に基づく電気接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、光ファイバ、コンパクトディスクリードオンリメモリ(CD-ROM)、光記憶装置、磁気記憶装置、又はこれらの任意の適切な組み合わせを含む。
ユーザとのインタラクティブを提供するために、コンピュータで本明細書に記載されるシステムおよび技術を実施することができ、当該コンピュータは、ユーザに情報を表示するための表示装置(たとえば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザがコンピュータに入力を提供し得るキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを有する。他の類型の装置は、ユーザとの対話を提供するために使用され得る。例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形態(例えば、音声入力、発話入力または触覚入力)でユーザからの入力を受信することができる。
本明細書で説明されるシステムおよび技術を、バックエンド部品を含むコンピューティングシステム(例えば、データサーバとして)、またはミドルウェア部品を含むコンピューティングシステム(例えば、アプリケーションサーバ)、またはフロントエンド部品を含むコンピューティングシステム(例えば、ユーザが本明細書で説明されるシステムおよび技術の実施例と対話することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するユーザコンピュータ)、またはそのようなバックエンド部品、ミドルウェア部品、もしくはフロントエンド部品の任意の組合せを含むコンピューティングシステムにおいて実施され得る。任意の形態または媒体のデジタルデータ通信(例えば、通信ネットワーク)を介してシステムの部品を互いに接続することができる。通信ネットワークの例示は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、およびインターネットを含む。
コンピュータシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、一般に、互いから離れており、通常、通信ネットワークを介してインタラクティブしている。相応的なコンピュータで運行し、互いにクライアント-サーバ関係を有するコンピュータプログラムによって、クライアントとサーバの関係を生成する。
なお、上記に示された様々な形態のフローを用いて、ステップを並べ替え、追加、または削除することができることを理解されたい。例えば、本開示に記載された各ステップは、並列的に実行されてもよく、順番に実行されてもよく、異なる順番で実行されてもよく、本開示において開示された技術案の所望の結果を達成することができる限り、ここで制限されない。
上記の具体的な実施例は、本開示の保護範囲を限定するものではない。当業者であれば、設計の要求及び他の要因に応じて、各種の補正、組合、サブ組合および切り替えを行うことができることは明らかであろう。本開示の思想及び原則における任意の補正、均等物及び改善は、本開示の保護範囲に含まれるべきである。

Claims (21)

  1. ソースファイルのプログラミング言語の類型について、同じ類型のソースファイルを含むソースファイルセットを取得することと、
    前記ソースファイルセットに関連する予め定められた組合せ規則に基づいて、前記ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせることと、
    各ソースファイルサブセットを全体としてコンパイルすることと、
    前記ソースファイルセットの前記類型に基づいて、前記ソースファイルセットに関連する前記予め定められた組合せ規則を特定することと、を含む
    コンパイル方法。
  2. 前記予め定められた組合せ規則は、
    前記ソースファイルのコンパイル時間、
    前記ソースファイルのサイズ、
    前記ソースファイルがコンパイルされた後のサイズ、
    前記ソースファイルを組合せてコンパイルした際のコンフリクト状況、
    のうちの少なくとも1つに基づいて生成される
    請求項1に記載の方法。
  3. 複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせることは、
    前記予め定められた組合せ規則によって指示される少なくとも1つの規則指定ソースファイルサブセットに基づいて、前記複数のソースファイルを、前記少なくとも1つのソースファイルサブセットに組み合わせ、各ソースファイルサブセットは、当該ソースファイルサブセットと対応している規則指定ソースファイルサブセットのうちのサブセットであることを含む
    請求項1に記載の方法。
  4. 前記予め定められた組合せ規則に基づいて、ヌルファイルを含む前記少なくとも1つのソースファイルサブセットとして、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを生成することをさらに含む
    請求項1に記載の方法。
  5. 各ソースファイルサブセットを全体としてコンパイルすることは、
    ソースファイルサブセットに含まれるコンテンツが組み合わされた既存のソースファイルサブセットと異なると特定することに基づいて、前記ソースファイルサブセットを全体としてコンパイルすることを含む
    請求項1に記載の方法。
  6. ソースファイルサブセットに含まれるコンテンツが組み合わされた既存のソースファイルサブセットと異なると特定することは、
    前記ソースファイルサブセットの名称が、組み合わされた既存のソースファイルサブセットの名称と異なると特定することを含む
    請求項5に記載の方法。
  7. 前記ソースファイルサブセットの前記名称は、前記予め定められた組合せ規則に基づいて生成される
    請求項6に記載の方法。
  8. 前記ソースファイルサブセットと同じ名称を有する組み合わせた既存のソースファイルサブセットを削除することをさらに含む
    請求項5に記載の方法。
  9. 前記ソースファイルセットにおける、前記少なくとも1つのソースファイルサブセットに含まれないソースファイルをコンパイルすることをさらに含む
    請求項1に記載の方法。
  10. ソースファイルのプログラミング言語の類型について、同じ類型のソースファイルを含むソースファイルセットを取得するように配置される取得モジュールと、
    前記ソースファイルセットに関連する予め定められた組合せ規則に基づいて、前記ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせるように配置される第1の組合せモジュールと、
    各ソースファイルサブセットを全体としてコンパイルするように配置される第1のコンパイルモジュールと、
    前記ソースファイルセットの前記類型に基づいて、前記ソースファイルセットに関連する前記予め定められた組合せ規則を特定するように配置される第1の特定モジュールと、
    を含む
    コンパイル装置。
  11. 前記予め定められた組合せ規則は、
    前記ソースファイルのコンパイル時間、
    前記ソースファイルのサイズ、
    前記ソースファイルがコンパイルされた後のサイズ、
    前記ソースファイルを組合せてコンパイルした際のコンフリクト状況、
    のうちの少なくとも1つに基づいて生成される
    請求項10に記載の装置。
  12. 前記第1の組合せモジュールは、
    前記予め定められた組合せ規則によって指示される少なくとも1つの規則指定ソースファイルサブセットに基づいて、前記複数のソースファイルを、前記少なくとも1つのソースファイルサブセットに組み合わせ、各ソースファイルサブセットは、当該ソースファイルサブセットと対応している規則指定ソースファイルサブセットのうちのサブセットであるように配置される第2の組合せモジュールを含む
    請求項10に記載の装置。
  13. 前記予め定められた組合せ規則に基づいて、ヌルファイルを含む前記少なくとも1つのソースファイルサブセットとして、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを生成するように配置される生成モジュールをさらに含む
    請求項10に記載の装置。
  14. 前記第1のコンパイルモジュールは、
    ソースファイルサブセットに含まれるコンテンツが組み合わされた既存のソースファイルサブセットと異なると特定することに基づいて、前記ソースファイルサブセットを全体としてコンパイルするように配置される第2のコンパイルモジュールを含む
    請求項10に記載の装置。
  15. 前記第2のコンパイルモジュールは、
    前記ソースファイルサブセットの名称が、組み合わされた既存のソースファイルサブセットの名称と異なると特定するように配置される第2の特定モジュールを含む
    請求項14に記載の装置。
  16. 前記ソースファイルサブセットの前記名称は、前記予め定められた組合せ規則に基づいて生成される
    請求項15に記載の装置。
  17. 前記ソースファイルサブセットと同じ名称を有する組み合わせた既存のソースファイルサブセットを削除するように配置される削除モジュールをさらに含む
    請求項14に記載の装置。
  18. 前記ソースファイルセットにおける、前記少なくとも1つのソースファイルサブセットに含まれないソースファイルをコンパイルするように配置される第3のコンパイルモジュールをさらに含む
    請求項10に記載の装置。
  19. 少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに通信可能に接続されたメモリと、を含み、
    前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令は、前記プロセッサによって実行され、前記少なくとも1つのプロセッサに請求項1~9のいずれか一項に記載の方法を実行させることを可能にする
    電子デバイス。
  20. コンピュータに請求項1~9のいずれか一項に記載の方法を実行させるためのコンピュータ命令を記憶した非一時的コンピュータ可読記憶媒体。
  21. プロセッサによって実行されたときに、請求項1~9のいずれか一項に記載の方法を実行するコンピュータプログラム。
JP2021155593A 2021-03-23 2021-09-24 コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム Active JP7393404B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110309279.1A CN113031961B (zh) 2021-03-23 2021-03-23 编译方法、编译装置、电子设备、存储介质和程序产品
CN202110309279.1 2021-03-23

Publications (2)

Publication Number Publication Date
JP2021192318A JP2021192318A (ja) 2021-12-16
JP7393404B2 true JP7393404B2 (ja) 2023-12-06

Family

ID=76472910

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021155593A Active JP7393404B2 (ja) 2021-03-23 2021-09-24 コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム

Country Status (5)

Country Link
US (1) US20220107791A1 (ja)
EP (1) EP4064037A1 (ja)
JP (1) JP7393404B2 (ja)
KR (1) KR20210124110A (ja)
CN (1) CN113031961B (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282438A1 (en) 2013-03-15 2014-09-18 United Parcel Service Of America, Inc. Methods, apparatuses and computer program products for improving productivity for building applications
CN109614106A (zh) 2018-12-21 2019-04-12 北京龙创悦动网络科技有限公司 一种c++程序编译方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05120025A (ja) * 1991-10-29 1993-05-18 Nec Software Ltd ソースプログラムのインライン展開方法
JP5856393B2 (ja) * 2011-06-07 2016-02-09 キヤノン株式会社 画像処理装置及びその制御方法
US8516457B2 (en) * 2011-06-28 2013-08-20 International Business Machines Corporation Method, system and program storage device that provide for automatic programming language grammar partitioning
GB2521367A (en) * 2013-12-17 2015-06-24 Ibm Adaptable and extensible runtime and system for heterogeneous computer systems
JP6500626B2 (ja) * 2015-06-16 2019-04-17 富士通株式会社 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
US9727317B2 (en) * 2015-11-04 2017-08-08 International Business Machines Corporation Optimized compilation using an auto-tuned compiler as a service
CN107291522B (zh) * 2016-04-11 2020-09-29 中国科学院信息工程研究所 一种面向自定义规则文件的编译优化方法及系统
CN106484428B (zh) * 2016-10-20 2019-10-15 百度在线网络技术(北京)有限公司 应用构建方法和装置
CN107908407B (zh) * 2017-12-11 2021-09-07 北京奇虎科技有限公司 编译方法、装置及终端设备
US10846081B2 (en) * 2019-04-11 2020-11-24 Mastercard International Incorporated System and method for code synchronization between mainframe environment and distributed environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282438A1 (en) 2013-03-15 2014-09-18 United Parcel Service Of America, Inc. Methods, apparatuses and computer program products for improving productivity for building applications
CN109614106A (zh) 2018-12-21 2019-04-12 北京龙创悦动网络科技有限公司 一种c++程序编译方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CATANZARO, M,"On Compiling WebKit (now twice as fast!)",MICHAEL CATANZARO'S BLOG On Fedora Workstation, GNOME, Epiphany, and WebKitGTK [online],2018年,pp. 1-6,[retrieved on 2022.09.16], Retrieved from the Internet: <URL: https://blogs.gnome.org/mcatanzaro/2018/02/17/on-compiling-webkit-now-twice-as-fast/>
窪田貴文 ほか,"WebKitにおけるUnified Buildsについての調査",情報処理学会研究報告システムソフトウェアとオペレーティング・システム(OS),日本,一般社団法人情報処理学会,2019年,第2019-OS-145巻, 第9号,pp. 1-6,ISSN 2188-8795

Also Published As

Publication number Publication date
US20220107791A1 (en) 2022-04-07
KR20210124110A (ko) 2021-10-14
CN113031961A (zh) 2021-06-25
JP2021192318A (ja) 2021-12-16
EP4064037A1 (en) 2022-09-28
CN113031961B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
CN108027722B (zh) 在编译和部署中动态更新应用
JP7324831B2 (ja) ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器
US10481884B2 (en) Systems and methods for dynamically replacing code objects for code pushdown
US9009183B2 (en) Transformation of a system change set from machine-consumable form to a form that is readily consumable by a human
US10331425B2 (en) Automated source code adaption to inject features between platform versions
CN111625224A (zh) 代码生成方法、装置、设备及存储介质
US9311077B2 (en) Identification of code changes using language syntax and changeset data
CN109313547B (zh) 用于cpu利用率和代码重构的查询优化器
US20170220613A1 (en) Systems and methods for database orientation transformation
US10248409B1 (en) Limiting the effects of source code patches on corresponding native-code patches
WO2017087801A1 (en) Dynamic update of an application in compilation and deployment
CN116028028A (zh) 请求函数生成方法、装置、设备及存储介质
US11029934B2 (en) Method and system for updating legacy software
US8875089B2 (en) Workspace model for interrelated projects
US10545741B2 (en) Information processing apparatus, method of compiling, and storage medium
US20140372488A1 (en) Generating database processes from process models
JP7393404B2 (ja) コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム
CN112270176B (zh) 深度学习框架中模式转换的方法、装置和计算机存储介质
US11429358B2 (en) Representing asynchronous state machine in intermediate code
CN114168151A (zh) 基于容器的程序编译方法、装置、电子设备及存储介质
CN113448852A (zh) 一种测试案例的获取方法、装置、电子设备及存储介质
US20110296389A1 (en) Mechanism for Allocating Statement Frontier Annotations to Source Code Statements
US12032941B2 (en) Method and system for updating legacy software
CN114168150A (zh) 应用程序编译方法、装置、电子设备及存储介质
CN115145627A (zh) 插件本地运行环境的搭建方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210924

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230719

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231031

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231124

R150 Certificate of patent or registration of utility model

Ref document number: 7393404

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150