![]() |
|
Модераторы: LSD |
![]()
|
|
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
||||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Не спорю. Сам именно так её и использую. -------------------- |
|||
|
||||
| W4FhLF |
|
||||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Реализовал. Только не то, что описал zim22. Я сделал перегрузку тринарных операторов. Получается нечто вроде замыканий. Сделал для A*B*D и A*B+D т.к. у меня эти операции используются в 90% случаев. Хотя можно сделать для любого выражения. Однако, если уж говорить об оптимизации, то накладные расходы не превышают 15%.
Возможно здесь уже все забыли. Но я класс с матрицами привёл по просьбе показать пример "С vs C++". И речь идёт о реализации собственных решений. У меня и в мыслях нет тягаться с ребятами из Intel или реализациями из BLAS какого-нибудь. Класс матрица просто "удачно" вспомнился. Мне интересно. Что будет с оптимизацией накладных расходов в твоём примере на фортране? И что будет, когда ты выйдешь за рамки стандартного, оптимизированного для конкретного компилятора (IFC), функционала?
Дело не в велосипеде. Изначально речь шла о удобстве использования собственных решений. Вот допустим оператор перемножения матриц у меня достаточно сложный и его поведение определяется размером матриц: 1. До 50000 элементов. Классическое умножение. 2. От 50000 до 2000000 элементов используется перемножение с более эффективным использованием кеша(одна матрица транспонируется и т.к. они у меня хранятся линейно, я прохожусь по обеим матрицами последовательно, что позволяет эффективно использовать кеш процессора) и векторизацией вычислений(сразу умножается от 4х до 16 элементов). 3. От 2000000 элементов. Вычисления переносятся на GPU. Никто не мешает использовать другие процедуры, из сторонних библиотек в том числе. Важно, что внешне как есть A * B, так и остаётся. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||||
|
|||||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
W4FhLF, дошло до меня. Тему, видимо, разбили. Отсюда утекло что-ли? Я уже отвечал в новой теме, с новым названием. =)
Это сообщение отредактировал(а) kemiisto - 20.9.2009, 17:04 -------------------- |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
||||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Хорошо. Но все-таки, на мой взгляд, игра не стоила свеч.
Так ведь я цеплялся именно к этому конкретному примеру. Как показывает опыт, результат получается лучше. А за функционал, если задачи являются сугубо вычислительными, вылезти очень сложно. Конечно, так тоже можно. В конце концов, можно просто написать обвязку для того же LAPACK и радоваться. Но тогда возникает другая проблема - сложность разработки и поддержки всего этого. Если вернуться к исходному вопросу, то бессмысленно спорить с тем, что C++ язык универсальный и очень мощный. И сделать на нем можно все. Но далеко не всегда это рационально. |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
mes, Вы, блин все как в вакууме сферическом живёте, ей богу. На календарь посмотри. 0x... -------------------- |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kemiisto, а чем буст не стандартный С++ ? в нем все средствами языка реализовано
|
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Если возвращаться к теме обсуждения и к примеру, приведённому W4FhLF'ом то надо чётко понимать разницу между фичей на уровне библиотек и фичей на уровне языка. boost - сторонняя библиотека. А мы обсуждаем язык. То, что, скажем в Fortran, дадено на уровне языка, можно реализовать на С++, используя шаблоны. Или уже реализовано и нужно только воспользоваться. Но! Сторонние библиотеки - это дополнительный объём кода, в т.ч. и объектного, дополнительный API, который надо изучить, дополнительные трудности с установкой/настройкой. А с точки зрения разработчика библиотеки - дополнительные трудозатраты. И в случае С++ ой какие не малые. Язык убожество полное. Дрянь. А шаблоны - no comments. Какой смысл, скажем, от BGL (пытался тут потрогать), если чтоб её использовать С++ надо лет 5-10 изучать? Кому нужно-то такое? А шаблонный код на ++ - это нечто. Perl нервно курит в сторонке. Зато да, крутость то как возрастает, когда говоришь, шаблоны, обобщённое программирование. Аж в штанах тяжелеет. Это сообщение отредактировал(а) kemiisto - 20.9.2009, 17:44 -------------------- |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kemiisto, вот лежит у меня книжка про BGL, гдето 300 страниц
у нее небольшая вводная часть про обобщенное программироваие, гдето 50 страниц, и там впринципе все что надо знать про ОП на С++ чтобы использовать С++ я использую С++ меньше года, и мне не надо было 5-10 лет, чтобы изучить С++ до уровня достаточного для понимания как использовать BGL большинство библиотек в бусте header only, они не содержат и не генерят лишний объектный код. встроенные средства языка типа Fortran генерируют не меньше кода, чем код получаемый при компиляции библиотек C++ жесткие встроенные средства не лучше чем гибкие возможности реализовать те же средства на уровне библиотек с шаблонами все нормально. я их постоянно юзаю, ничего плохого в них не вижу, надо просто потратить время на их изучение. затраты на написание библиотеки компенсируются ее частым использованием, и удобством ее использования Это сообщение отредактировал(а) GoldFinch - 20.9.2009, 18:42 |
|||
|
||||
| kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Тут 2 варианта: ты либо гений, либо врун. Я даже расписывать не хочу. Что называется, не надо ла-ла. Меньше года и уже понимать многое в шаблонах... Нет... Или гений. А я вот туповат, видимо.
Верно в общем случае. Абсолютно никакого отношения не имеет к предмету обсуждения - С++. Этот мультипарадигменный многоязык содержит тонны ненужного хлама. И будет содержать ещё больше. Очень много нужно вынести на уровень библиотек. И тогда тезис станет верным и для С++.
Извини, у меня этого времени нет. Совсем нет. И я не чувствую, что получу практическую выгоду от знания этой фичи. У меня длине станет? -------------------- |
||||||
|
|||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
насчет С++ vs С vs all
http://forum.vingrad.ru/index.php?showtopi...t&p=1943034 в этом посте сравнивается код на С с обобщенным кодом С++ приводятся замеры времени выполнения и дизасмы результаты практически одинаковы приведите время выполнения такого же кода например на Fortran и его дизасм Добавлено через 13 минут и 52 секунды kemiisto, насчет гений\врун - посмотри мои посты на этом форуме я тут зарегился когда только начал писать на С\С++ (в начале больше на С чем на С++) |
|||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Ты ещё про scaling factor не забывай. Программы пишут не только программисты. А в случае прикладного ПО и не столько программисты. Времени на изучение С++ и борьбу с его ублюдочным синтаксисом и прочими "фичами" у них нет. И желания нет. У них мужское начало проявляется в другой форме. Там по-другому меряются.
Меня не интересуют синтетические тесты. Пока я вижу в области, которая мне интересна, практически полное доминирование Fortran'а. Значит не просто так... -------------------- |
||||
|
|||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Ты утверждаешь что знаешь С++, я говорю что не знаю Лисп. И я не сравниваю эти языки, и не утверждаю что компетентен это делать, в отличии от тебя. Так будь добр, покажи что это действительно так, а то одна болтовня только. Предлагаю тебе написать свой битсет любой размерности с доступом к битам по индексу. т.е. хотелось бы использовать вот так.
Недостаточно. В каждом языке своё представление как это должно работать. Я спрашиваю в третий раз, чем поддержка ООП в Лиспе мощнее чем поддержка ООП в С++? Пока что ты ограничиваешься лишь общими фразами. Может ответишь на вопрос? Ты утверждаешь что Лисп гибче, так объясни чем он гибче, пока что ни одного примера его большей гибкости я не видел. Может я решу что стоит Лисп изучить... Это сообщение отредактировал(а) Леопольд - 20.9.2009, 20:33 -------------------- вопросов больше чем ответов |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kemiisto, если у тебя проблемы с изучением С++, то это твои проблемы, а не языка.
ты - не показатель. |
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |