jacobsHack! October 17-18, Bremen, Germany
Have you always wanted to create your own app? Do you like changing the status quo? Are you a doer instead of a talker? Do you want to meet new fellow developers from all over the world? Are you currently a student or did you graduate in the last year? Then join us for jacobsHack! on October 17. — 18. at Jacobs University Bremen in Germany!

Registrations are open at: 2015f.jacobshack.com
For more information also see: fb.com/jacobshack.bremen

Registrations are open at: 2015f.jacobshack.com
For more information also see: fb.com/jacobshack.bremen
- 0
- 12 вересня 2015, 21:31
- FTL
- Залишити коментар
Гурток 11 листопада доведеться посунути на 18.11 у зв'язку із засіданням в цей час Науково-технічної ради НаУКМА ВВ
Automatic Vectorization, and A Curious Case of Java Being Faster Than C++

Speaker: Danylo Fitel
Talk slides.
Demo projects.
Аудиторія 1-331
- 0
- 06 листопада 2014, 23:20
- FTL
- Залишити коментар
Гурток 7 жовтня
High-performance code is no longer CPU code!

Speaker: Danylo Fitel
Talk slides.
Inspired by Eric Brumer and Herb Sutter.
7 жовтня 2014, 16:30
Аудиторія 1-331

Speaker: Danylo Fitel
Talk slides.
Inspired by Eric Brumer and Herb Sutter.
7 жовтня 2014, 16:30
Аудиторія 1-331
- 0
- 06 жовтня 2014, 12:27
- FTL
- Залишити коментар
Template Metaprogramming in C++
Практична користь шаблонів в плюсах — не тільки генерація коду (яскравий приклад — стратегії Alexandrescu), але й обчислення на етапі компіляції і оптимізація коду (далі поясню, що маю на увазі).
1. Обчислення на етапі компіляції. Представляють скоріше теоретичний інтерес, хоча і дають простір для оптимізації (в деяких практичних застосуваннях, наприклад, FFT, забезпечують дуже пристойний виграш в швидкості).
На жаль, чомусь всі люблять демонструвати паршиві приклади з неефективними алгоритмами (наприклад, числа Фібоначчі і піднесення до степеня ніколи не роблять правильно). Виправив цю досадну несправедливість.
Починаючи з C++11, такі трюки втрачають актуальність через constexpr, який дозволяє робити те саме, тільки зрозуміліше і естетичніше.
2. Оптимізація коду. Як правило, йдеться про якийсь ітеративний алгоритм, реалізовиний рекурсивними шаблонними визначеннями. Розумний компілятор, який знає трюки типу inlining і loop unrolling, може перетворити таку шаблонну рекурсивну функцію в звичайну послідовність операторів без логіки циклу чи рекурсії, тим самим значно вкоротивши кількість інструкцій.
Для прикладу, так можна перетворити BubbleSort масиву, розмір якого — стала етапу компіляції, в послідовність свопів, більше того, в цій ситуації prefetcher дасть максимальний приріст швидкості. Інший приклад — обчислення функції за розкладом в ряд Тейлора, кількість членів розкладу якого — теж константа етапу компіляції: на виході — код без зайвих змінних/лічильників/викликів функцій.
Проект для студії (версія 2013+) лежить тут. Деякі фічі типу static_assert не працюватимуть в старих студіях, їх можна закоментувати. З іншими компіляторами проблем бути не повинно (хіба якісь нюанси часткової спеціалізації).
А тут непогана презентація про шаблони в плюсах, в тому числі і про їх повноту за Тюрингом.
Enjoy!
1. Обчислення на етапі компіляції. Представляють скоріше теоретичний інтерес, хоча і дають простір для оптимізації (в деяких практичних застосуваннях, наприклад, FFT, забезпечують дуже пристойний виграш в швидкості).
На жаль, чомусь всі люблять демонструвати паршиві приклади з неефективними алгоритмами (наприклад, числа Фібоначчі і піднесення до степеня ніколи не роблять правильно). Виправив цю досадну несправедливість.
Починаючи з C++11, такі трюки втрачають актуальність через constexpr, який дозволяє робити те саме, тільки зрозуміліше і естетичніше.
2. Оптимізація коду. Як правило, йдеться про якийсь ітеративний алгоритм, реалізовиний рекурсивними шаблонними визначеннями. Розумний компілятор, який знає трюки типу inlining і loop unrolling, може перетворити таку шаблонну рекурсивну функцію в звичайну послідовність операторів без логіки циклу чи рекурсії, тим самим значно вкоротивши кількість інструкцій.
Для прикладу, так можна перетворити BubbleSort масиву, розмір якого — стала етапу компіляції, в послідовність свопів, більше того, в цій ситуації prefetcher дасть максимальний приріст швидкості. Інший приклад — обчислення функції за розкладом в ряд Тейлора, кількість членів розкладу якого — теж константа етапу компіляції: на виході — код без зайвих змінних/лічильників/викликів функцій.
Проект для студії (версія 2013+) лежить тут. Деякі фічі типу static_assert не працюватимуть в старих студіях, їх можна закоментувати. З іншими компіляторами проблем бути не повинно (хіба якісь нюанси часткової спеціалізації).
А тут непогана презентація про шаблони в плюсах, в тому числі і про їх повноту за Тюрингом.
Enjoy!
- 0
- 20 червня 2014, 18:32
- FTL
- Залишити коментар
Баян, або код, який виводить сам себе на екран (quine)
Про баянізм красномовно свідчить назва, але на випадок, якщо раптом хто не в курсі: написати код, який… виводить сам себе на екран!
Хто лінивий, про це є навіть окрема стаття на вікіпедії (див quine). Хто наполегливий, той молодець.
Хто лінивий, про це є навіть окрема стаття на вікіпедії (див quine). Хто наполегливий, той молодець.
Презентація доповіді про особливості стажування і роботи в Microsoft
Dropbox link.
- +3
- 09 жовтня 2013, 10:16
- FTL
- Залишити коментар