JP6375649B2 - ソフトウェアプログラムの効率を高める方法及びプロセッサ - Google Patents
ソフトウェアプログラムの効率を高める方法及びプロセッサ Download PDFInfo
- Publication number
- JP6375649B2 JP6375649B2 JP2014051457A JP2014051457A JP6375649B2 JP 6375649 B2 JP6375649 B2 JP 6375649B2 JP 2014051457 A JP2014051457 A JP 2014051457A JP 2014051457 A JP2014051457 A JP 2014051457A JP 6375649 B2 JP6375649 B2 JP 6375649B2
- Authority
- JP
- Japan
- Prior art keywords
- software program
- type information
- software
- variable
- variables
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
Description
(付記1)
ソフトウェアプログラムの効率を高める方法であって、
動的型付きプログラミング言語に基づき作成されるソフトウェアプログラムを実行し、
前記ソフトウェアプログラムの実行の間、該ソフトウェアプログラムに含まれる変数についてタイプ情報を決定し、
前記ソフトウェアプログラム及び前記タイプ情報に基づき、修正されたソフトウェアプログラムを生成し、
前記修正されたソフトウェアプログラムを配信する
方法。
(付記2)
前記修正されたソフトウェアプログラムを生成することは、前記ソフトウェアプログラムのデータ構造において前記変数についての前記タイプ情報を格納することを含み、前記データ構造の夫々は、前記変数の少なくとも1つを用いる前記ソフトウェアプログラムのコールサイトに関連する、
付記1に記載の方法。
(付記3)
更に、
前記ソフトウェアプログラムをプロファイリングし、
前記ソフトウェアプログラムのプロファイリングに基づき前記タイプ情報を決定する
付記1に記載の方法。
(付記4)
更に、
前記ソフトウェアプログラムのプロファイリングに基づき該ソフトウェアプログラムの使用頻度の高い関数を決定し、
前記ソフトウェアプログラムにおける前記変数の少なくとも1つについて、該少なくとも1つの変数が前記使用頻度の高い関数において含まれることに基づき前記タイプ情報を決定する
付記3に記載の方法。
(付記5)
更に、
前記ソフトウェアプログラムのプロファイリングに基づき該ソフトウェアプログラムの実行の間の変数タイプの使用の頻度を決定し、
前記変数タイプの使用の頻度に基づき前記タイプ情報を決定する
付記3に記載の方法。
(付記6)
更に、前記タイプ情報を決定するようランタイム・メソッド・バインディングを実行する
付記1に記載の方法。
(付記7)
更に、前記ソフトウェアプログラムのデータ構造において前記変数についての前記タイプ情報を格納するようインライン・キャッシングを実行し、前記データ構造の夫々は、前記変数の少なくとも1つを用いる前記ソフトウェアプログラムのコールサイトに関連する、
付記1に記載の方法。
(付記8)
更に、前記ソフトウェアプログラムを実行するよう該ソフトウェアプログラムの記号的実行を実行する
付記1に記載の方法。
(付記9)
更に、前記ソフトウェアプログラムを実行するよう該ソフトウェアプログラムへテストスイートを適用する、
付記1に記載の方法。
(付記10)
システムにソフトウェアプログラムの効率を高めさせるようにコンピュータ可読媒体からのコンピュータ命令を実行するよう構成されるプロセッサであって、
前記命令は、
動的型付きプログラミング言語に基づき作成されるソフトウェアプログラムを実行し、
前記ソフトウェアプログラムの実行の間、該ソフトウェアプログラムに含まれる変数についてタイプ情報を決定し、
前記ソフトウェアプログラム及び前記タイプ情報に基づき、修正されたソフトウェアプログラムを生成し、
前記修正されたソフトウェアプログラムを配信する
ことを含む、プロセッサ。
(付記11)
前記修正されたソフトウェアプログラムを生成することは、前記ソフトウェアプログラムのデータ構造において前記変数についての前記タイプ情報を格納することを含み、前記データ構造の夫々は、前記変数の少なくとも1つを用いる前記ソフトウェアプログラムのコールサイトに関連する、
付記10に記載のプロセッサ。
(付記12)
前記命令は、
前記ソフトウェアプログラムをプロファイリングし、
前記ソフトウェアプログラムのプロファイリングに基づき前記タイプ情報を決定する
ことを更に含む、付記10に記載のプロセッサ。
(付記13)
前記命令は、
前記ソフトウェアプログラムのプロファイリングに基づき該ソフトウェアプログラムの使用頻度の高い関数を決定し、
前記ソフトウェアプログラムにおける前記変数の少なくとも1つについて、該少なくとも1つの変数が前記使用頻度の高い関数において含まれることに基づき前記タイプ情報を決定する
ことを更に含む、付記12に記載のプロセッサ。
(付記14)
前記命令は、
前記ソフトウェアプログラムのプロファイリングに基づき該ソフトウェアプログラムの実行の間の変数タイプの使用の頻度を決定し、
前記変数タイプの使用の頻度に基づき前記タイプ情報を決定する
ことを更に含む、付記12に記載のプロセッサ。
(付記15)
前記命令は、前記タイプ情報を決定するようランタイム・メソッド・バインディングを実行することを更に含む、
付記10に記載のプロセッサ。
(付記16)
前記命令は、前記ソフトウェアプログラムのデータ構造において前記変数についての前記タイプ情報を格納するようインライン・キャッシングを実行することを更に含み、前記データ構造の夫々は、前記変数の少なくとも1つを用いる前記ソフトウェアプログラムのコールサイトに関連する、
付記10に記載のプロセッサ。
(付記17)
前記命令は、前記ソフトウェアプログラムを実行するよう該ソフトウェアプログラムの記号的実行を実行することを更に含む、
付記10に記載のプロセッサ。
(付記18)
前記命令は、前記ソフトウェアプログラムを実行するよう該ソフトウェアプログラムへテストスイートを適用することを更に含む、
付記10に記載のプロセッサ。
102,202 動的型付きソフトウェアプログラム
204,104 タイプ情報モジュール
106,206 修正された動的型付きソフトウェアプログラム
208 テストスイート
210 実行モジュール
212 プロファイリングモジュール
214 インライン・キャッシングモジュール
216 修正ソフトウェアモジュール
218 配信モジュール
Claims (14)
- ソフトウェアプログラムの効率を高める方法であって、
動的型付きプログラミング言語に基づき作成されるソフトウェアプログラムを実行し、
前記ソフトウェアプログラムの実行の間、該ソフトウェアプログラムに含まれる変数についてタイプ情報を決定し、
前記ソフトウェアプログラム及び前記タイプ情報に基づき、修正されたソフトウェアプログラムを生成し、
前記修正されたソフトウェアプログラムを配信する
方法であり、
更に、
前記ソフトウェアプログラムをプロファイリングし、
前記ソフトウェアプログラムのプロファイリングに基づき、該ソフトウェアプログラム内の、前記変数のうちの第1の変数の第1の使用頻度及び前記変数のうちの第2の変数の第2の使用頻度を決定し、
前記ソフトウェアプログラムに含まれる前記変数について前記タイプ情報を決定することは、前記第1の使用頻度が前記第2の使用頻度よりも高い場合、前記第2の変数についてタイプ情報を決定することよりも優先して、前記第1の変数についてタイプ情報を決定することを含み、
前記方法は、更に、
前記ソフトウェアプログラムのプロファイリングに基づき該ソフトウェアプログラムの使用頻度の高い関数を決定し、
前記ソフトウェアプログラムにおける前記変数の少なくとも1つについて、該少なくとも1つの変数が前記使用頻度の高い関数において含まれることに基づき前記タイプ情報を決定する、
方法。 - 前記修正されたソフトウェアプログラムを生成することは、前記ソフトウェアプログラムのデータ構造において前記変数についての前記タイプ情報を格納することを含み、前記データ構造の夫々は、前記変数の少なくとも1つを用いる前記ソフトウェアプログラムのコールサイトに関連する、
請求項1に記載の方法。 - 更に、
前記ソフトウェアプログラムのプロファイリングに基づき該ソフトウェアプログラムの実行の間の変数タイプの使用の頻度を決定し、
前記変数タイプの使用の頻度に基づき前記タイプ情報を決定する
請求項1に記載の方法。 - 更に、前記タイプ情報を決定するようランタイム・メソッド・バインディングを実行する
請求項1に記載の方法。 - 更に、前記ソフトウェアプログラムのデータ構造において前記変数についての前記タイプ情報を格納するようインライン・キャッシングを実行し、前記データ構造の夫々は、前記変数の少なくとも1つを用いる前記ソフトウェアプログラムのコールサイトに関連する、
請求項1に記載の方法。 - 更に、前記ソフトウェアプログラムを実行するよう該ソフトウェアプログラムの記号的実行を実行する
請求項1に記載の方法。 - 更に、前記ソフトウェアプログラムを実行するよう該ソフトウェアプログラムへテストスイートを適用する、
請求項1に記載の方法。 - システムにソフトウェアプログラムの効率を高めさせるようにコンピュータ可読媒体からのコンピュータ命令を実行するよう構成されるプロセッサであって、
前記命令は、
動的型付きプログラミング言語に基づき作成されるソフトウェアプログラムを実行し、
前記ソフトウェアプログラムの実行の間、該ソフトウェアプログラムに含まれる変数についてタイプ情報を決定し、
前記ソフトウェアプログラム及び前記タイプ情報に基づき、修正されたソフトウェアプログラムを生成し、
前記修正されたソフトウェアプログラムを配信する
ことを含む、プロセッサであり、
前記命令は、
前記ソフトウェアプログラムをプロファイリングし、
前記ソフトウェアプログラムのプロファイリングに基づき、該ソフトウェアプログラム内の、前記変数のうちの第1の変数の第1の使用頻度及び前記変数のうちの第2の変数の第2の使用頻度を決定する
ことを更に含み、
前記ソフトウェアプログラムに含まれる前記変数について前記タイプ情報を決定することは、前記第1の使用頻度が前記第2の使用頻度よりも高い場合、前記第2の変数についてタイプ情報を決定することよりも優先して、前記第1の変数についてタイプ情報を決定することを含み、
前記命令は、
前記ソフトウェアプログラムのプロファイリングに基づき該ソフトウェアプログラムの使用頻度の高い関数を決定し、
前記ソフトウェアプログラムにおける前記変数の少なくとも1つについて、該少なくとも1つの変数が前記使用頻度の高い関数において含まれることに基づき前記タイプ情報を決定する
ことを更に含む、
プロセッサ。 - 前記修正されたソフトウェアプログラムを生成することは、前記ソフトウェアプログラムのデータ構造において前記変数についての前記タイプ情報を格納することを含み、前記データ構造の夫々は、前記変数の少なくとも1つを用いる前記ソフトウェアプログラムのコールサイトに関連する、
請求項8に記載のプロセッサ。 - 前記命令は、
前記ソフトウェアプログラムのプロファイリングに基づき該ソフトウェアプログラムの実行の間の変数タイプの使用の頻度を決定し、
前記変数タイプの使用の頻度に基づき前記タイプ情報を決定する
ことを更に含む、請求項8に記載のプロセッサ。 - 前記命令は、前記タイプ情報を決定するようランタイム・メソッド・バインディングを実行することを更に含む、
請求項8に記載のプロセッサ。 - 前記命令は、前記ソフトウェアプログラムのデータ構造において前記変数についての前記タイプ情報を格納するようインライン・キャッシングを実行することを更に含み、前記データ構造の夫々は、前記変数の少なくとも1つを用いる前記ソフトウェアプログラムのコールサイトに関連する、
請求項8に記載のプロセッサ。 - 前記命令は、前記ソフトウェアプログラムを実行するよう該ソフトウェアプログラムの記号的実行を実行することを更に含む、
請求項8に記載のプロセッサ。 - 前記命令は、前記ソフトウェアプログラムを実行するよう該ソフトウェアプログラムへテストスイートを適用することを更に含む、
請求項8に記載のプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/837,231 US9256398B2 (en) | 2013-03-15 | 2013-03-15 | Device and method of increasing dynamically-typed software efficiency |
US13/837,231 | 2013-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014186728A JP2014186728A (ja) | 2014-10-02 |
JP6375649B2 true JP6375649B2 (ja) | 2018-08-22 |
Family
ID=51534637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014051457A Active JP6375649B2 (ja) | 2013-03-15 | 2014-03-14 | ソフトウェアプログラムの効率を高める方法及びプロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US9256398B2 (ja) |
JP (1) | JP6375649B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9201797B1 (en) * | 2013-05-15 | 2015-12-01 | Google Inc. | Per-selector dispatch |
JP6497271B2 (ja) * | 2015-08-21 | 2019-04-10 | 富士通株式会社 | テストデータ生成装置、方法、及びプログラム |
CN107273175A (zh) * | 2016-04-06 | 2017-10-20 | 龙芯中科技术有限公司 | 程序优化方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6588009B1 (en) * | 1999-11-29 | 2003-07-01 | Adelante Technologies Nv | Method and apparatus for compiling source code using symbolic execution |
JP3431568B2 (ja) * | 2000-03-30 | 2003-07-28 | 松下電器産業株式会社 | プログラム変換装置、プログラム変換方法及びプログラム記録媒体 |
JP2003216434A (ja) * | 2002-01-25 | 2003-07-31 | Hewlett Packard Co <Hp> | 小型情報機器において、ユーザプロファイルデータの活用により、ダウンロードプログラムの最適化を図る方法およびシステム。 |
JP2003316583A (ja) * | 2002-04-26 | 2003-11-07 | Toshiba Corp | サーバ装置及びプログラム最適化方法 |
US7340726B1 (en) | 2003-08-08 | 2008-03-04 | Coverity, Inc. | Systems and methods for performing static analysis on source code |
US7478367B2 (en) | 2005-01-11 | 2009-01-13 | International Business Machines Corporation | Dynamic source code analyzer |
US20080178149A1 (en) * | 2007-01-24 | 2008-07-24 | Peterson James G | Inferencing types of variables in a dynamically typed language |
JP5466601B2 (ja) * | 2010-08-31 | 2014-04-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コード生成方法、システム及びプログラム |
US8769486B2 (en) * | 2011-01-06 | 2014-07-01 | The Mathworks, Inc. | Dynamically generating statically-typed proxies for dynamically-typed functions |
US8819649B2 (en) * | 2011-09-09 | 2014-08-26 | Microsoft Corporation | Profile guided just-in-time (JIT) compiler and byte code generation |
US9128732B2 (en) * | 2012-02-03 | 2015-09-08 | Apple Inc. | Selective randomization for non-deterministically compiled code |
US8819382B2 (en) * | 2012-08-09 | 2014-08-26 | Apple Inc. | Split heap garbage collection |
US20140173556A1 (en) * | 2012-12-17 | 2014-06-19 | Qualcomm Incorporated | Systems and methods for selection of specialized functions in dynamically-typed languages |
-
2013
- 2013-03-15 US US13/837,231 patent/US9256398B2/en active Active
-
2014
- 2014-03-14 JP JP2014051457A patent/JP6375649B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2014186728A (ja) | 2014-10-02 |
US9256398B2 (en) | 2016-02-09 |
US20140282381A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9785456B2 (en) | Metadata-driven dynamic specialization | |
JP6746156B2 (ja) | ソフトウェアリパッケージング防止方法および装置 | |
JP6329274B2 (ja) | コンパイラ最適化のためのメモリ参照メタデータ | |
US9760350B2 (en) | Optimistically assuming types in a dynamically typed language | |
JP6264964B2 (ja) | ソフトウェア検証方法及びプロセッサ | |
JP2015507310A5 (ja) | ||
US8656379B2 (en) | Systems and methods for uniquely defining Fortran run time type descriptors for polymorphic entities | |
US8869128B2 (en) | Compiling method, program, and information processing apparatus | |
EP2862097A2 (en) | Optimized execution of dynamic languages | |
CN112905447B (zh) | 一种区块链虚拟机的测试方法和系统 | |
JP2014501412A5 (ja) | ||
JP6375649B2 (ja) | ソフトウェアプログラムの効率を高める方法及びプロセッサ | |
JP2015146179A (ja) | テストダブルの生成 | |
JP2019215847A (ja) | バッファオーバーフローの低減 | |
US9632816B2 (en) | Scaling past the Java virtual machine thread limit | |
US10496433B2 (en) | Modification of context saving functions | |
CN116113927A (zh) | 用于函数调用中可重复使用和相对索引的寄存器资源分配的方法和装置 | |
JP6476777B2 (ja) | テストコンテキストの生成 | |
US9928089B2 (en) | Optimizing software code | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
US8561027B2 (en) | Reflection capability in static programming languages | |
Kim et al. | Automated analysis of industrial embedded software | |
US10387229B2 (en) | Reducing cost of deserialization by skipping unused array regions | |
CN115168911A (zh) | 用于对函数调用提供安全保护的方法、装置及存储介质 | |
Araujo et al. | Interprocedural variable liveness analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170912 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180306 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180406 |
|
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: 20180626 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180709 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6375649 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |