Autor Wątek: WTF, czyli zabójcze możliwości optymalizacji w Visual Studio...  (Przeczytany 3043 razy)

Offline Shelim

  • Użytkownik
    • Homepage

# Wrzesień 29, 2010, 20:58:28
Pokażę mały eksperyment, po którym pół dnia dochodziłem do siebie...

Otóż implementowałem sobie parser wyrażeń matematycznych. Dość skomplikowany (rozpoznawanie stałych, funkcji matematycznych, notacja polska, itp.). No to myślę sobie, ok- przetestujemy jak to się kompiluje na najlepszej optymalizacji. Walnąłem:

int result = MathParse("sin(pi) * 5 + cos(pi/2) /2 + 14 * 5");
Skompilowałem. Działa. Błyskawicznie.

Zresztą, ciężko się dziwić prędkości, bowiem assembly po skompilowaniu w maksymalnej optymalizacji wyglądało mniej więcej... tak:

mov [result] 70
Zaliczyłem naprawdę ciężkie zderzenie szczęki z piwnicą...

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline _OskaR

  • Użytkownik

# Wrzesień 29, 2010, 21:10:34
Zrób wczytywanie danych z pliku czy z klawiatury - szczęka chyba powinna wrócić.

Offline ConayR

  • Użytkownik

# Wrzesień 29, 2010, 21:27:03
Kompilator optymalizuje operacje na stałych - niebywałe! ;]

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Wrzesień 29, 2010, 21:28:14
Dziwi Cię zaimplementowanie "constant expressions"? D ma to od urodzenia :)

Offline lethern

  • Użytkownik

# Wrzesień 29, 2010, 21:34:19
Czy owe "MathParse" to jakaś funkcja standardowej biblioteki, albo jakiś feature...? Czy co? Bo dziwi mnie, jak kompilator zoptymalizował działania matematyczne w stringu :P A jeśli jakaś funkcja autorska, to... ciekawe :)
« Ostatnia zmiana: Wrzesień 29, 2010, 21:53:40 wysłana przez lethern »

Offline yarpen

  • Użytkownik

# Wrzesień 29, 2010, 21:35:37
Kompilator optymalizuje operacje na stałych - niebywałe! ;]
Przeczytaj ten kod dokladnie.

Offline Dab

  • Redaktor
    • blog

# Wrzesień 29, 2010, 21:47:59
Niezłe! Który Visual, najnowszy?

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Wrzesień 29, 2010, 21:50:49
Pewnie MathParse rzutuje wskaźnik do otrzymanego stringa z const char* na int? ;)

Offline Shelim

  • Użytkownik
    • Homepage

# Wrzesień 29, 2010, 21:57:06
No właśnie to mnie najbardziej zaskoczyło - bo w środku tego MathParse jest mnóstwo non-constant funkcji... Jestem pod ogromnym wrażeniem :)

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Wrzesień 29, 2010, 22:14:57
bo w środku tego MathParse jest mnóstwo non-constant funkcji...
np co? ;)

Offline Groshu

  • Użytkownik

# Wrzesień 30, 2010, 02:30:40
bo w środku tego MathParse jest mnóstwo non-constant funkcji...
Widocznie kompilator stwierdził inaczej :P

Offline ConayR

  • Użytkownik

# Październik 01, 2010, 23:31:08
działania matematyczne w stringu :P
Ooops! ;]

Offline Liosan

  • Redaktor

# Październik 02, 2010, 00:06:42
Jakoś zamiast "wow" mam ochotę powiedzieć "no nareszcie" - czy to takie trudne stwierdzić brak skutków ubocznych wykonania funkcji?

Liosan