In software engineering, strength reduction is a compiler optimization where expensive operations are replaced with equivalent but less expensive operations. The classic example of strength reduction converts "strong" multiplications inside a loop into "weaker" additions – something that frequently occurs in array addressing. (, p. 1) Examples of strength reduction include: * replacing a multiplication within a loop with an addition * replacing an exponentiation within a loop with a multiplication

Property Value
dbo:abstract
  • In software engineering, strength reduction is a compiler optimization where expensive operations are replaced with equivalent but less expensive operations. The classic example of strength reduction converts "strong" multiplications inside a loop into "weaker" additions – something that frequently occurs in array addressing. (, p. 1) Examples of strength reduction include: * replacing a multiplication within a loop with an addition * replacing an exponentiation within a loop with a multiplication (en)
  • 演算子強度低減(英: Strength reduction)とはコンパイラ最適化手法の一つで、コストの高い演算式を等価でコストの低い演算式に置き換えるものである。 演算子強度低減では、数学的な同一性を用いて低速な演算式を高速な演算式で置換する。置換したことによるコストと利点は対象の CPU や、時には周辺のコード(CPU 内の機能ユニットが利用できるかどうか)に大きく依存する。 * 整数の乗除算を 2 の累乗と論理シフトや算術シフトで置き換える。 * 整数の乗算をシフト、加減算によって置き換える 帰納変数の強度低減、再帰的な強度低減では、自動的に変化するような結果を返す関数を以前の結果を用いて簡単な演算結果に置き換える。これは、手続き型プログラミングでは、ループ変数に関連する式に適用でき、宣言型プログラミングでは再帰呼び出しの引数に適用できる。例えば、 f x = ... (2 ** x) ... (f (x + 1)) ... は、以下のようになる。 f x = f' x (2 ** x)ここで f' x z = ... z ... (f' (x + 1) (2 * z)) ...である。 このようにして、高価な演算 (2 ** x) は再帰的関数 f' でコストの低い (2 * z) に置換された。いかなる f' の呼び出しに関しても、z = 2 ** x との等価性を維持している。 (ja)
  • Снижением стоимости операций в теории компиляторов называют замену медленных операций, например, умножения и деления, на более быстрые, такие как сложение, вычитание, сдвиг. Так, деление (умножение) на равносильно сдвигу на разрядов вправо (влево). Существуют алгоритмы преобразования операций умножения и деления на произвольное целое число в последовательность более простых операций (сложений, вычитаний и сдвигов). Подобная оптимизация обычно выполняется компилятором автоматически и не требует вмешательства программиста. (ru)
  • 在軟體工程領域,強度折減(Strength reduction)是一個編譯器最佳化技術,它將昂貴的運算以相同但是相對便宜的運算取代,最經典的範例就是將乘法轉換為使用迴圈的連續加法,這經常使用在陣列的定址。(,p.1) 強度折減的範例包含: * 使用迴圈及加法取代乘法運算 * 使用迴圈及乘法取代指數運算 (zh)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 475907 (xsd:integer)
dbo:wikiPageRevisionID
  • 698639244 (xsd:integer)
dct:subject
http://purl.org/linguistics/gold/hypernym
rdf:type
rdfs:comment
  • In software engineering, strength reduction is a compiler optimization where expensive operations are replaced with equivalent but less expensive operations. The classic example of strength reduction converts "strong" multiplications inside a loop into "weaker" additions – something that frequently occurs in array addressing. (, p. 1) Examples of strength reduction include: * replacing a multiplication within a loop with an addition * replacing an exponentiation within a loop with a multiplication (en)
  • Снижением стоимости операций в теории компиляторов называют замену медленных операций, например, умножения и деления, на более быстрые, такие как сложение, вычитание, сдвиг. Так, деление (умножение) на равносильно сдвигу на разрядов вправо (влево). Существуют алгоритмы преобразования операций умножения и деления на произвольное целое число в последовательность более простых операций (сложений, вычитаний и сдвигов). Подобная оптимизация обычно выполняется компилятором автоматически и не требует вмешательства программиста. (ru)
  • 在軟體工程領域,強度折減(Strength reduction)是一個編譯器最佳化技術,它將昂貴的運算以相同但是相對便宜的運算取代,最經典的範例就是將乘法轉換為使用迴圈的連續加法,這經常使用在陣列的定址。(,p.1) 強度折減的範例包含: * 使用迴圈及加法取代乘法運算 * 使用迴圈及乘法取代指數運算 (zh)
  • 演算子強度低減(英: Strength reduction)とはコンパイラ最適化手法の一つで、コストの高い演算式を等価でコストの低い演算式に置き換えるものである。 演算子強度低減では、数学的な同一性を用いて低速な演算式を高速な演算式で置換する。置換したことによるコストと利点は対象の CPU や、時には周辺のコード(CPU 内の機能ユニットが利用できるかどうか)に大きく依存する。 * 整数の乗除算を 2 の累乗と論理シフトや算術シフトで置き換える。 * 整数の乗算をシフト、加減算によって置き換える 帰納変数の強度低減、再帰的な強度低減では、自動的に変化するような結果を返す関数を以前の結果を用いて簡単な演算結果に置き換える。これは、手続き型プログラミングでは、ループ変数に関連する式に適用でき、宣言型プログラミングでは再帰呼び出しの引数に適用できる。例えば、 f x = ... (2 ** x) ... (f (x + 1)) ... は、以下のようになる。 f x = f' x (2 ** x)ここで f' x z = ... z ... (f' (x + 1) (2 * z)) ...である。 (ja)
rdfs:label
  • Strength reduction (en)
  • 演算子強度低減 (ja)
  • Снижение стоимости операций (ru)
  • 強度折減 (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageDisambiguates of
is foaf:primaryTopic of