ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠžΠ±Π·ΠΎΡ€ ΠΈ тСстированиС компиляторов Π‘++

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ сСмСйства gccΠΈ clangс ΠΎΠΏΡ†ΠΈΠ΅ΠΉ O0 сгСнСрировали ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтсябыстрСС, Ρ‡Π΅ΠΌ выполняСтся ΠΊΠΎΠ΄, сгСнСрированный этими ΠΆΠ΅ компиляторами с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ vector. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°2 Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… компиляторов Π½Π° Π·Π°Π΄Π°Ρ‡Π΅ сортировки массива чисСл Ρ‚ΠΈΠΏΠ° double. Числа задавались Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ псСвдослучайных чисСл Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠžΠ±Π·ΠΎΡ€ ΠΈ тСстированиС компиляторов Π‘++ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
    • 1. 1. ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции
    • 1. 2. ΠžΠ±Π·ΠΎΡ€ компиляторов
      • 1. 2. 1. Visual C
      • 1. 2. 2. GNU Compiler Collection
      • 1. 2. 3. Clang
  • Π“Π»Π°Π²Π° 2. ΠžΠ±Π·ΠΎΡ€ Π·Π°Π΄Π°Ρ‡
    • 2. 1. НакладныС расходы
    • 2. 2. ВСстовыС Π·Π°Π΄Π°Ρ‡ΠΈ
  • Π“Π»Π°Π²Π° 3. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования
    • 3. 1. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°
    • 3. 2. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2
  • Листинг 1. benchmark_eratosthenes.cpp
  • Листинг 2. benchmark_qs.cpp

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ сСмСйства gccΠΈ clangс ΠΎΠΏΡ†ΠΈΠ΅ΠΉ O0 сгСнСрировали ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтсябыстрСС, Ρ‡Π΅ΠΌ выполняСтся ΠΊΠΎΠ΄, сгСнСрированный этими ΠΆΠ΅ компиляторами с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ vector<bool>.Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°2 Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… компиляторов Π½Π° Π·Π°Π΄Π°Ρ‡Π΅ сортировки массива чисСл Ρ‚ΠΈΠΏΠ° double. Числа задавались Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ псСвдослучайных чисСл Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка Π‘srand. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… 16−21 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ быстрой сортировки (см. Π³Π»Π°Π²Π° 2, Π·Π°Π΄Π°Ρ‡Π° 2).Π’Π°Π±Π»ΠΈΡ†Π° 16. ВрСмя выполнСния © Π·Π°Π΄Π°Ρ‡ΠΈ 2, компилятор gcc 4.8ΠšΠ»ΡŽΡ‡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈk = 1k = 10k = 100k = 1000O00.

0100.

0871.

1 511.

637O10.

0050.

0330.

4615.

148O20.

0030.

0320.

4295.

182O30.

0030.

0320.

4245.

028Π’Π°Π±Π»ΠΈΡ†Π° 17. ВрСмя выполнСния © Π·Π°Π΄Π°Ρ‡ΠΈ 2, компилятор gcc 4.6ΠšΠ»ΡŽΡ‡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈk = 1k = 10k = 100k = 1000O00.

0100.

0901.

2 111.

932O10.

0030.

0370.

4405.

091O20.

0030.

0420.

4465.

211O30.

0030.

0410.

4245.

072Π‘Ρ€Π°Π²Π½ΠΈΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, прСдставлСнныС Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 16 ΠΈ 17, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ сгСнСрированный компилятором gcc 4.8 (для Π·Π°Π΄Π°Ρ‡ΠΈ 2, Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π΅) с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ O2 ΠΈ Ρ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉO3выполнился быстрСС, Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄ сгСнСрированный gcc 4.

6.Но с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ условиями, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ O1 быстрСС ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΊΠΎΠ΄, сгСнСрированный gcc 4.

6.Π’Π°Π±Π»ΠΈΡ†Π° 18. ВрСмя выполнСния © Π·Π°Π΄Π°Ρ‡ΠΈ 2, компилятор clang3.

4.ΠšΠ»ΡŽΡ‡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈk = 1k = 10k = 100k = 1000O00.

0080.

0831.

19 513.

806O10.

0050.

0450.

6418.

173O20.

0030.

0350.

3985.

170O30.

0030.

0320.

3885.

124Π’Π°Π±Π»ΠΈΡ†Π° 19. ВрСмя выполнСния © Π·Π°Π΄Π°Ρ‡ΠΈ 2, компилятор clang3.

2.ΠšΠ»ΡŽΡ‡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈk = 1k = 10k = 100k = 1000O00.

0100.

0891.

7 812.

341O10.

0090.

0680.

6617.

618O20.

0030.

0350.

4004.

579O30.

0030.

0370.

4084.

581Π‘Ρ€Π°Π²Π½ΠΈΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ† 18 ΠΈ 19, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ сгСнСрированный компилятором clang 3.2 (Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π΅Ρ‡ΠΈΡΠ΅Π») выполнился быстрСС, Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄ сгСнСрированный clang3.

4.Π’Π°Π±Π»ΠΈΡ†Π° 20. ВрСмя выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ 2 ©, компиляторcl 18ΠšΠ»ΡŽΡ‡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈk = 1k = 10k = 100k = 1000Od0.

0120.

0871.

4 311.

509O10.

0030.

0310.

3213.

335O20.

0030.

0270.

3113.

174Ox0.

0030.

0280.

3133.

073Π’Π°Π±Π»ΠΈΡ†Π° 21. ВрСмя выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ 2 ©, компиляторcl 16ΠšΠ»ΡŽΡ‡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈk = 1k = 10k = 100k = 1000Od0.

0110.

0891.

1012.

274O10.

0030.

0290.

3233.

204O20.

0030.

0270.

2963.

071Ox0.

0030.

0270.

3133.

069На Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅3 прСдставлСны Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования для массива чисСл Ρ‚ΠΈΠΏΠ° doubleΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ .По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ тСстирования ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ тСст ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ быстрСС ΠΏΡ€ΠΎΡˆΠ»ΠΈ компиляторы ΠΎΡ‚ Microsoft. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС оказался компилятор cl 16, Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ — компилятор cl 18. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°3.БыстрСС Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π΅Π· Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ выполнился ΠΊΠΎΠ΄, сгСнСрированный компилятором cl 18, Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ мСстС — ΠΊΠΎΠ΄, сгСнСрированный gcc 4.

8.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ тСстированиС компиляторов: clang 3.4, clang 3.2, gcc 4.8, gcc 4.6, cl 18, cl 16 Π½Π° Ρ‚Сстовых Π·Π°Π΄Π°Ρ‡Π°Ρ… «Π Π΅ΡˆΠ΅Ρ‚ΠΎ ЭратосфСна» ΠΈ Π±Ρ‹ΡΡ‚рая сортировка массива чисСл Ρ‚ΠΈΠΏΠ° double. Π˜Π·ΠΌΠ΅Ρ€ΡΠ»ΠΎΡΡŒ врСмя выполнСния ΠΊΠΎΠ΄Π°, сгСнСрированного компилятором Π±Π΅Π· Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ компиляции ΠΈ Ρ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. На Π΄Π°Π½Π½Ρ‹Ρ… тСстовых Π·Π°Π΄Π°Ρ‡Π°Ρ… Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… опциях ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ всС рассматриваСмыС компиляторы Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполнялся быстрСС, Ρ‡Π΅ΠΌ Π±Π΅Π· Π½ΠΈΡ…. Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π±ΠΎΡ‚Π΅ исслСдований ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

Π·Π°Π΄Π°Ρ‡Π° «Π Π΅ΡˆΠ΅Ρ‚ΠΎ ЭратосфСна"Π² качСствС массивав Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ использованvector<bool>:опция ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ O1 Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ gcc 4.8;опция ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ O2 ΠΈ O3 Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ clang 3.4 Π’ качСствС массивав Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½vector<char>:с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ O1, O2 ΠΈ O3Π±Ρ‹ΡΡ‚Ρ€Π΅Π΅ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΊΠΎΠ΄, сгСнСрированный cl 18. Быстрая сортировка массива:

с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ O1, O2 ΠΈ O3Π±Ρ‹ΡΡ‚Ρ€Π΅Π΅ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΊΠΎΠ΄, сгСнСрированный cl 16. Как ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡŒ, компиляторы ΠΎΡ‚ MicrosoftΠ½Π΅ΠΏΠ»ΠΎΡ…ΠΎ проявили сСбя Π² Ρ‚Сстах, Π΄Π°ΠΆΠ΅ Π²Ρ‹ΠΈΠ³Ρ€Π°Π² Π²Ρ‚ΠΎΡ€ΠΎΠΉ тСст (это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ компиляторы Microsoft ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ΄ Windows, Π° gccΠΈ clangΡΠ²Π»ΡΡŽΡ‚ΡΡ кроссплатформСнными).

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

ΠŸΠ΅Ρ€ΡˆΠΈΠΊΠΎΠ² Π’. И., Π‘Π°Π²ΠΈΠ½ΠΊΠΎΠ² Π’. М. Π’ΠΎΠ»ΠΊΠΎΠ²Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ / Π Π΅Ρ†Π΅Π½Π·Π΅Π½Ρ‚Ρ‹: ΠΊΠ°Π½Π΄.

Ρ„ΠΈΠ·.-ΠΌΠ°Ρ‚. Π½Π°ΡƒΠΊ А. Π‘. ΠœΠ°Ρ€ΠΊΠΎΠ² ΠΈ Π΄-Ρ€ Ρ„ΠΈΠ·.-ΠΌΠ°Ρ‚. Π½Π°ΡƒΠΊ И. Π’.

ΠŸΠΎΡ‚Ρ‚ΠΎΡΠΈΠ½. — Πœ.: Ѐинансы ΠΈ ΡΡ‚атистика, 1991 Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley, -2 ed. 2007MicrosoftVisualStudio 2010 [ЭлСктронныйрСсурс] - Π Π΅ΠΆΠΈΠΌ доступа:

http://msdn.microsoft.com/ru-ru/library/vstudio/52f3sw5c (v=vs.100).aspxGCC, theGNUCompilerCollection [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа:

https://gcc.gnu.org/TheLLVMCompilerInfrastructure [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа:

http://llvm.org/clang: a C language family frontend for LLVM [ЭлСктронныйрСсурс] - РСТимдоступа:

http://clang.llvm.org/The LLVM Target-Independent Code Generator [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - РСТимдоступа:

http://llvm.org/docs/CodeGenerator.htmlSedgewick, Robert (1992). Algorithms in C++. Addison-Wesley. ISBN 0−201−51 059−6., p. 16GCC 4.6 Release Series Changes, New Features, and Fixes[Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа:

https://gcc.gnu.org/gcc-4.6/changes.htmlGCC 4.8 Release Series Changes, New Features, and Fixes[Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа:

https://gcc.gnu.org/gcc-4.8/changes.htmlΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Листинг 1. benchmark_eratosthenes.cpp#include <iostream>#include <vector>#include <cmath>#include «timer.h» constint number = 1 000 000;voideratosthenes (intn) {// ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ, ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΎ Π±ΠΎΠ»ΡŒΡˆΠ΅Π³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎintsqrt_n = static_cast<int>(std:sqrt (static_cast<double>(n)))+1;// массив, для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, TYPE — Ρ‚ΠΈΠΏ элСмСнтов массива // ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ Π² ΠΎΠΏΡ†ΠΈΡΡ… ΠΏΡ€ΠΈ компиляции ΠΊΠ°ΠΊDTYPE=bool ΠΈΠ»ΠΈDTYPE=charstd:vector<TYPE> primes (n, true); timer: StartTimer ();// Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ€Π΅ΡˆΠ΅Ρ‚Π°for (inti = 2; i < sqrt_n; ++i) {if (primes[i]) {for (int j = i*i; j < n; j += i) primes[j] = false; } } // ΠΊΠΎΠ½Π΅Ρ†Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° std: cout << timer: Timer () << «sn»; // Π²Ρ‹Π²ΠΎΠ΄Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΡ€Π°Π±ΠΎΡ‚Ρ‹}int main () {for (inti = 0; i < 4; ++i) {switch (i) {case 0: eratosthenes (number); break;case 1: eratosthenes (number*10); break;case 2: eratosthenes (number*100); break;case 3: eratosthenes (number*1000); break;}}return 0;} Листинг2. benchmark_qs.cpp#include <algorithm>#include <vector>#include <iostream>#include <cstdlib>#include «timer.h» template<typenameIterator>boolcheckSort (Iterator first, Iterator last) {Iteratorprev = first;first++;while (first ≠ last) {if (*first++ < *prev++) {return false;}}return true;}// QuickSorttemplate <typename T>voidQuickSort (std:vector<T>& ar, int left, int right) {inti = left, j = right;T pivot = ar[(left+right)/2]; while (i <= j) {while (ar[i] < pivot) i++;while (ar[j] > pivot) j—;if (i <= j) {std:swap (ar[i], ar[j]);i++; j—;}}if (left < j) QuickSort (ar, left, j);if (i < right) QuickSort (ar, i, right); }void process (int size) {srand (size + 123);std:vector<double> numbers (size);// initialize the table to sortdouble* master_table = new double[size]; for (int n = 0; n < size; ++n)master_table[n] = static_cast<double>(rand ());boolisCheck = false;timer:StartTimer ();std:copy (master_table, master_table+size, numbers. begin ());QuickSort (numbers, 0, size-1);isCheck = checkSort (&numbers[0], &numbers[0] + size);if (isCheck)std:cout << timer: Timer () << «sn»; else std: cerr << «fail!n» ;// free memorydelete[] master_table;}int main () {int n = 30 000;for (inti = 0; i < 4; ++i) {switch (i) {case 0: process (n); break;case 1: process (n*10); break;case 2: process (n*100); break;case 3: process (n*1000); break;}}return 0;}.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

  1. Π’. И., Π‘Π°Π²ΠΈΠ½ΠΊΠΎΠ² Π’. М. Π’ΠΎΠ»ΠΊΠΎΠ²Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ / Π Π΅Ρ†Π΅Π½Π·Π΅Π½Ρ‚Ρ‹: ΠΊΠ°Π½Π΄. Ρ„ΠΈΠ·.-ΠΌΠ°Ρ‚. Π½Π°ΡƒΠΊ А. Π‘. ΠœΠ°Ρ€ΠΊΠΎΠ² ΠΈ Π΄-Ρ€ Ρ„ΠΈΠ·.-ΠΌΠ°Ρ‚. Π½Π°ΡƒΠΊ И. Π’. ΠŸΠΎΡ‚Ρ‚ΠΎΡΠΈΠ½. — Πœ.: Ѐинансы ΠΈ ΡΡ‚атистика, 1991
  2. Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley, -2 ed. 2007
  3. Microsoft Visual Studio 2010 [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа:
  4. http://msdn.microsoft.com/ru-ru/library/vstudio/52f3sw5c (v=vs.100).aspx
  5. GCC, the GNU Compiler Collection [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа: https://gcc.gnu.org/
  6. The LLVM Compiler Infrastructure [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа: http://llvm.org/
  7. clang: a C language family frontend for LLVM [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа: http://clang.llvm.org/
  8. The LLVM Target-Independent Code Generator [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа: http://llvm.org/docs/CodeGenerator.html
  9. Sedgewick, Robert (1992). Algorithms in C++. Addison-Wesley. ISBN 0−201−51 059−6., p. 16
  10. GCC 4.6 Release Series Changes, New Features, and Fixes [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа: https://gcc.gnu.org/gcc-4.6/changes.html
  11. GCC 4.8 Release Series Changes, New Features, and Fixes[Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] - Π Π΅ΠΆΠΈΠΌ доступа: https://gcc.gnu.org/gcc-4.8/changes.html
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ
ΠšΡƒΠΏΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ

Π˜Π›Π˜