Re[13]: Because we can!
От: CreatorCray  
Дата: 30.04.14 00:57
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>да. процессору уже всё равно какую команду (mova,movu,ld) ты исполняешь, остались только бессмысленные проверки для mova и reg-mem операций. а при использовании vex нет и проверок

Это радует. Спасибо за инфу.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: Зачем шаблоны в С++?
От: jazzer Россия Skype: enerjazzer
Дата: 30.04.14 03:29
Оценка: :)))
Здравствуйте, alpha21264, Вы писали:

A>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, alpha21264, Вы писали:


A>>>Люди! А для чего вы используете шаблоны?


J>>Для зарабатывания денег.


A>Это очень общий ответ.


Да нет, самый что ни на есть конкретный, Строуструп не зря же сделал С++ именно таким:

C. Hо это же история века. Я просто хотел чтоб мои приятели-программисты помнили меня за то, что я для них сделал. Знаете как сейчас оплачивается программирование на C++ ?

И. Последнее, что я слышал — настоящие профессионалы зарабатывают $70-80 в час.

C. Понимаете теперь? И я уверен, что он заслуживает этих денег. Отслеживание всех этих ловушек, которые я встроил в C++ — не легкая работа.

http://extelma.ru/topic-550.html
($70-80 — это в ценах 1998 года, когда было опубликовано интервью. Если кто не верит, вот ссылка на английский текст: http://www.erenkrantz.com/Humor/FakeIEEEStroustrupInterview.shtml)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[9]: Зачем шаблоны в С++?
От: Molchalnik  
Дата: 30.04.14 04:30
Оценка: :)))
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Molchalnik, Вы писали:


M>>Кто ж спорит, константа. Что не верного? Загрузка константы в регистр. Например, при размере ParameterType в 9 байт туда будет загружатся 9

CC>Для константы будет сгенерён точно такой же LEA eax, [eax+eax*8] как и для шаблонного.

И как это меняет мою логику?
Re[4]: Зачем шаблоны в С++?
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.04.14 04:42
Оценка:
Здравствуйте, jazzer, Вы писали:


J>($70-80 — это в ценах 1998 года, когда было опубликовано интервью. Если кто не верит, вот ссылка на английский текст: http://www.erenkrantz.com/Humor/FakeIEEEStroustrupInterview.shtml)

Ну, то есть слово Fake в адресе вас не смутило. Похвально.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Зачем шаблоны в С++?
От: jazzer Россия Skype: enerjazzer
Дата: 30.04.14 05:26
Оценка: :)))
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, jazzer, Вы писали:



J>>($70-80 — это в ценах 1998 года, когда было опубликовано интервью. Если кто не верит, вот ссылка на английский текст: http://www.erenkrantz.com/Humor/FakeIEEEStroustrupInterview.shtml)

S>Ну, то есть слово Fake в адресе вас не смутило. Похвально.

После слова Humor — нет, не смутило

ЗЫ Неужто смайлики все же обязательно вставлять, если даже сам Sinclair...
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Зачем цифровые компьютеры?
От: Няшка Россия  
Дата: 30.04.14 06:38
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Здравствуйте, Няшка, Вы писали:



Н>>Аналоговые гораздо проще и быстрее!


A>Вообще-то нынешние цифровые уже обогнали аналоговые. И превратились в DSP.


1. Я бы не стал так однозначно утверждать.
2. Развитие аналоговых компьютеров остановилось.
3. От решаемых задач тоже всё сильно зависит.

Я боюсь, что мне не хватит "базы", чтобы доказывать состоятельность аналоговых компьютеров, но можно отталкиваться от того, что цифровым компьютерам до человеческого мозга пока далеко.
80% людей оценивают свое мастерство выше среднего...
Re: С++ не нужен
От: Aртём Австралия жж
Дата: 30.04.14 06:56
Оценка: -1
Здравствуйте, alpha21264, Вы писали:

совсем.
Re[4]: Зачем цифровые компьютеры?
От: Evgeniy Skvortsov Россия  
Дата: 30.04.14 07:07
Оценка: +2
Здравствуйте, Няшка, Вы писали:

Н>Я боюсь, что мне не хватит "базы", чтобы доказывать состоятельность аналоговых компьютеров, но можно отталкиваться от того, что цифровым компьютерам до человеческого мозга пока далеко.


А аналоговые были совсем рядом ?
Re[4]: Зачем цифровые компьютеры?
От: jazzer Россия Skype: enerjazzer
Дата: 30.04.14 08:11
Оценка:
Здравствуйте, Няшка, Вы писали:

Н>>>Аналоговые гораздо проще и быстрее!


A>>Вообще-то нынешние цифровые уже обогнали аналоговые. И превратились в DSP.


Н>1. Я бы не стал так однозначно утверждать.

Н>2. Развитие аналоговых компьютеров остановилось.

D-Wave — аналоговый компьютер по сути.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: Зачем шаблоны в С++?
От: alpha21264 СССР  
Дата: 30.04.14 08:27
Оценка:
Здравствуйте, Abyx, Вы писали:

A>Здравствуйте, alpha21264, Вы писали:


A>>>Возьми любую сложную программу на С++, которую писали люди, знающие С++, и там будут шаблоны.

A>>>"сложная" — это где много LOC, много модулей в архитектуре.

A>>Много чего? Ты когда пишешь, подразумевай, что мне набор терминов тоже мало знаком.

A>это сокращение, а не термин.
A>сокращения типа KB,MB,GB — тоже расшифровывать?

Если рядом с цифрой, то я бы догадался. Если в тексте, то нет.

A>>Хоть ссылку на Википедию ставь.

A>викичто? тебя гугл чтоли забанил?

Гугл выдаёт ссылку на чистящее средство.
Я предположил, что ты не это имел в виду.


A>>>Если ты нашел программу без шаблонов — покажи нам, мы поясним где ими можно улучшить код.

A>>Ну например CUPS. Это сервер печати в Линуксе. (Есть в исходных кодах).
A>на С++, да?

А какая разница на С или на С++?
Наверное по сравнению с более простым (примитивным) языком проще преимущества показать?

Ну хорошо, давай возьмём библиотеку Qt. Она на С++.
Там даже есть своя библиотека контейнеров и она на темплейтах.
Но весь остальной код почему-то без них.


PS.
В очередной раз обращаю внимание — я не утверждаю, что шаблоны не нужны.
Я хочу посмотреть примеры, где они дают существенный выигрыш. С самообразовательной целью.

Течёт вода Кубань-реки куда велят большевики.
Re[2]: С++ не нужен
От: alpha21264 СССР  
Дата: 30.04.14 08:28
Оценка:
Здравствуйте, Aртём, Вы писали:

Aё>Здравствуйте, alpha21264, Вы писали:


Aё>совсем.


Ну у меня была мысль, что в таких случаях нужно какой-нибудь Питон брать.
Но там свои грабли.

Течёт вода Кубань-реки куда велят большевики.
Re[10]: Зачем шаблоны в С++?
От: Molchalnik  
Дата: 30.04.14 08:35
Оценка: +2
M>И как это меняет мою логику?

Судя по количеству смайликов, я всё же не совсем ясно объяснил.

Если писать универсальный код на C и писать универсальный код на шаблонах C++, то второй вариант будет производительнее.

Я это отдельно и в явном виде обозначил.

Но некоторые товарищи почему-то тут же начали сравнивать неуниверсальный код, код для конкретного типа, с кодом на шаблонах.

Естественно, абсолютно нет разницы, как вы получите код X — напишете его ручками, или этот код сгенерит шаблон, после инстанцирования заданных шаблонных параметров.


Главное — помнить, что шаблон не является кодом. Шаблон можно сравить с формой для отливки кода. Код появляется только в момент инстанцирования, при задании конкретных параметров, и для каждого набора параметров он дублируется, а заодно оптимизируется индивидуально. В этом-то и его сила — в индивидуальной оптимизации для каждой инстанции.
Re[5]: Зачем шаблоны в С++?
От: Molchalnik  
Дата: 30.04.14 09:23
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>PS.

A>В очередной раз обращаю внимание — я не утверждаю, что шаблоны не нужны.
A>Я хочу посмотреть примеры, где они дают существенный выигрыш. С самообразовательной целью.
A>


1. Напиши оптимальный кэш на плюсах, а потом на чистом си, и сравни производительность
2. Изучи статический полиморфизм. В отличии от динамического полиморфизма, он более производителен.
3. Чтобы каждый раз, когда тебе понадобится вектор, не прибивать его гвоздями к этому куску кода и к этому типу


Я видел очень старый код, смешанный на СИ и СИ плюс плюс, и ассемблере, где было очень много копипасты и велосипедов. В каждом месте каждый новый программер писал свой вектор, прибивали гвоздями свой кэш подкачки из файла для специфических типов. Бррр, жуть.
Шаблоны разруливают это на раз.
Re[7]: Зачем шаблоны в С++?
От: Patalog Россия  
Дата: 30.04.14 10:13
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

[]

CC>Уже неверно. sizeof (ParameterType) — константа.


А где ты возьмешь ParameterType в "универсальный код на С"?
Макросами выкружишь?
А иначе ParameterType будет void* и sizeof (ParameterType) будет рантаймом, вместе с вытекающим из этого
mul eax
Почетный кавалер ордена Совка.
Re[5]: Зачем шаблоны в С++?
От: DarkEld3r  
Дата: 30.04.14 11:34
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ну хорошо, давай возьмём библиотеку Qt. Она на С++.

A>Там даже есть своя библиотека контейнеров и она на темплейтах.
A>Но весь остальной код почему-то без них.
A>
Это не правда.
Re[8]: Зачем шаблоны в С++?
От: CreatorCray  
Дата: 30.04.14 16:51
Оценка:
Здравствуйте, Patalog, Вы писали:

CC>>Уже неверно. sizeof (ParameterType) — константа.

P>А где ты возьмешь ParameterType в "универсальный код на С"?
Это надо спрашивать у автора. Мне тоже интересно.

P>Макросами выкружишь?

P>А иначе ParameterType будет void* и sizeof (ParameterType) будет рантаймом, вместе с вытекающим из этого

Дык ведь sizeof это всегда константа
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: Зачем шаблоны в С++?
От: Stanislav V. Zudin Россия  
Дата: 30.04.14 17:28
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Patalog, Вы писали:


CC>>>Уже неверно. sizeof (ParameterType) — константа.

P>>А где ты возьмешь ParameterType в "универсальный код на С"?
CC>Это надо спрашивать у автора. Мне тоже интересно.

Автор уже расшифровал свое утверждение здесь
Автор: Molchalnik
Дата: 29.04.14
.

P>>Макросами выкружишь?

P>>А иначе ParameterType будет void* и sizeof (ParameterType) будет рантаймом, вместе с вытекающим из этого

CC>Дык ведь sizeof это всегда константа


Вот только есть у меня сомнения относительно шибкого ускорения lea vs mov.
В одном из проектов у нас был собственный аналог std::vector. Массив был шаблонный, но память под элементы выделяли как массив байт. Т.е. внутри работали как в старом добром Си, с приведением типа. Тип данных только в интерфейсной части и при вычислении размера элемента и все такое... Применялся он только для POD типов. При перевыделении памяти использовали memcpy, вместо поэлементного копирования.
Дык тесты однозначно показывали скорость работы много выше, чем у std::vector, хотя, казалось бы, у компилятора не было информации о фактическом размере элементов и все такое.
Это было в 2009-2010 гг. Возможно сейчас, на других процессорах и с другими компиляторами картина будет другой.

Было бы любопытно ознакомиться с реальными замерами, вместо теоретических рассуждений "что мог бы сделать компилятор...".
_____________________
С уважением,
Stanislav V. Zudin
Re[10]: Зачем шаблоны в С++?
От: Evgeny.Panasyuk Россия  
Дата: 30.04.14 17:45
Оценка: +1
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Вот только есть у меня сомнения относительно шибкого ускорения lea vs mov.

SVZ>В одном из проектов у нас был собственный аналог std::vector. Массив был шаблонный, но память под элементы выделяли как массив байт. Т.е. внутри работали как в старом добром Си, с приведением типа. Тип данных только в интерфейсной части и при вычислении размера элемента и все такое... Применялся он только для POD типов. При перевыделении памяти использовали memcpy, вместо поэлементного копирования.
SVZ>Дык тесты однозначно показывали скорость работы много выше, чем у std::vector, хотя, казалось бы, у компилятора не было информации о фактическом размере элементов и все такое.
SVZ>Это было в 2009-2010 гг. Возможно сейчас, на других процессорах и с другими компиляторами картина будет другой.

Если требуется работать именно как с массивом байт, то информация о типе особо не поможет.
(тем не менее, предполагаю, что хотя вы и работали как с массивом байт — информация о типе всё равно использовалась, например при вычислении смещения элемента вы же использовали sizeof(T)?)
Более того, ваш vector, скорей всего не был полным аналогом std::vector'а по функциональности и exception safety.

Вот кстати, sizeof(T) для qsort передаётся из-вне, то есть является runtime значением. Стандартный C подход (точнее "без-шаблонный").

SVZ>Было бы любопытно ознакомиться с реальными замерами, вместо теоретических рассуждений "что мог бы сделать компилятор...".


Если тебе интересен какой-то конкретный case — то можем разобрать его, с замерами и ассемблерными листингами. Но только давай не в КСВ.
Re[9]: Зачем шаблоны в С++?
От: Patalog Россия  
Дата: 30.04.14 18:56
Оценка:
Здравствуйте, CreatorCray, Вы писали:

[]

P>>А иначе ParameterType будет void* и sizeof (ParameterType) будет рантаймом, вместе с вытекающим из этого


CC>Дык ведь sizeof это всегда константа


Он константа там, где мы знаем ParameterType. Внутри "универсального кода на С" у нас этой информации нет, у нас есть void*.
Почетный кавалер ордена Совка.
Re: Зачем шаблоны в С++?
От: awol  
Дата: 30.04.14 19:37
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Народ!

Не поддаваться на провокации!

A>Вот дожил до 45 лет и не знаю, зачем в С++ шаблоны.

Тут нечем гордиться.

A>Люди! А для чего вы используете шаблоны?

Чтобы глумиться над окружающими, и видеть их лица, когда они потерялись в приоритетах шаблонов функций.

A>Может я чего упускаю?

Уже упустил.

A>Сложные программы пишу, например, в известном САПРе OrCad есть мой код.

Даешь C++11!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.