Здравствуйте, Pzz, Вы писали:
Pzz>Поэтому раздувание кода не только ускоряет код, но и замедляет его. Какая из тенденций побеждает, зависит от конкретной программы и конкретной характеристики загрузки, угадать это сложно, надо мерить.
Хорошо, я это не знал. Можно как вариант указать функцию и инлайнить/размножать в ней всё рекурсивно (кроме функций которые сами рекурсивны). Пробовать разные варианты, что указывать.
Я плюсы не знаю, спорить с местными не получится нормально, но в Delphi по-моему можно найти нишу для этого. Есть прослойка дельфистов, пишущих игры или что-то похожее, у них могут стоять задачи оптимизации. У меня несколько раз так было.
Со стандартными размножителями есть проблема — это мешает отладке. В Delphi XE 8, если указать инлайновость у функции, внутри её уже нельзя поставить брекпоинт. Может и в плюсах также? Тут по-хорошему надо иметь два варианта кода — неразмноженный и размноженный, и отдельно отлаживать каждый из них.
K>>Вам не понравились две конкретные мои идеи, но разве не логично что венчурные инвестиции — тема выгодная?
Pzz>Это непростой вопрос. На венчурные деньги хорошо делать проекты типа "наговнякать по-быстрому и срубить бабла". Наукоемкие проекты с большой исследовательской компонентой никто венчурным капиталом финансировать не будет. Венчурный капиталист хочет выйти через пару лет с прибылью, даже если и с вероятностью 1/10.
То что я предлагаю, подойдёт именно для долгосрочных проектов. Возможно тут пока не поняли суть моей идеи, позже попробую объяснить.
Pzz>В цело, я думаю, в России в обозримом будующем развитие будет идти за счет проектов с большим государственным участием. Вопрос только в том, удастся ли создать конструкцию, в которой заметное финансирование будет попадать в руки тех, кто может сделать что-то интересное, или все будет растекаться по "своим".
Я вот довольно часто слышал, что в России экономика очень рыночная. Хотя тут на данный момент у меня противоречивые сведения.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[5]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Khimik, Вы писали:
Pzz>>Поэтому раздувание кода не только ускоряет код, но и замедляет его. Какая из тенденций побеждает, зависит от конкретной программы и конкретной характеристики загрузки, угадать это сложно, надо мерить.
K>Хорошо, я это не знал. Можно как вариант указать функцию и инлайнить/размножать в ней всё рекурсивно (кроме функций которые сами рекурсивны). Пробовать разные варианты, что указывать.
Слушай, над этим очень плотно работают ребята, которые делают gcc и ребята, которые делают LLVM. И это — две разные команды. Ты их не переплюнешь ни в одиночку, ни с маленьким стартапом. К тому же, ты даже простых вещей, как выясняется, не знаешь. А там — целая куча тонкостей, о которых и я не знаю.
K>Я вот довольно часто слышал, что в России экономика очень рыночная. Хотя тут на данный момент у меня противоречивые сведения.
Венчурный капитал любит проекты с быстрой и большой отдачей. Это — такая американская чисто специфика, быстренько набросали на Питоне, сунули в продакшен и заработали миллион.
Два месяца труда парочки-троечки "стартаперов" не могут при справедливой экономике стоить миллион. Тут игра и правда идет на том, что выигрывает 1 из десяти. Плюс, в США у населения очень много лишних денег.
Re[5]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Khimik, Вы писали:
Pzz>>Поэтому раздувание кода не только ускоряет код, но и замедляет его. Какая из тенденций побеждает, зависит от конкретной программы и конкретной характеристики загрузки, угадать это сложно, надо мерить.
K>Хорошо, я это не знал. Можно как вариант указать функцию и инлайнить/размножать в ней всё рекурсивно (кроме функций которые сами рекурсивны). Пробовать разные варианты, что указывать.
Нормальные компиляторы сами умеют просчитывать все варианты и выбирать лучший в зависимости от приоритета скрости или размера кода.
Ты бы, ученый и философ, перед генерацией своих идей хотя бы минимально матчасть бы попробовал поизучать
K>Я плюсы не знаю, спорить с местными не получится нормально, но в Delphi по-моему можно найти нишу для этого. Есть прослойка дельфистов, пишущих игры или что-то похожее, у них могут стоять задачи оптимизации. У меня несколько раз так было.
А, так ты про дельфи вообще. На дельфях рынок сам по себе маленький. Я думаю, ты со своим проектом — большая часть этого рынка
K>Со стандартными размножителями есть проблема — это мешает отладке. В Delphi XE 8, если указать инлайновость у функции, внутри её уже нельзя поставить брекпоинт. Может и в плюсах также? Тут по-хорошему надо иметь два варианта кода — неразмноженный и размноженный, и отдельно отлаживать каждый из них.
Нет, в плюсах не так же. Не знал, что в дельфях всё так запущено
K>То что я предлагаю, подойдёт именно для долгосрочных проектов. Возможно тут пока не поняли суть моей идеи, позже попробую объяснить.
Тогда это уже мало похоже на венчурное инвестирование. И да, мы твои идеи часто не понимаем, и ты часто обещаешь что-то потом обдумать, но всегда обманываешь
K>Я вот довольно часто слышал, что в России экономика очень рыночная. Хотя тут на данный момент у меня противоречивые сведения.
Здравствуйте, Pzz, Вы писали:
Pzz>Слушай, над этим очень плотно работают ребята, которые делают gcc и ребята, которые делают LLVM. И это — две разные команды. Ты их не переплюнешь ни в одиночку, ни с маленьким стартапом.
Ещё MSVC, ICC как минимум. И кроме них ещё есть компиляторы
Pzz>К тому же, ты даже простых вещей, как выясняется, не знаешь. А там — целая куча тонкостей, о которых и я не знаю.
Лучший человек России, учёный и философ. Куда нам, лапотникам, до него
Здравствуйте, Pzz, Вы писали:
Pzz>Слушай, над этим очень плотно работают ребята, которые делают gcc и ребята, которые делают LLVM. И это — две разные команды. Ты их не переплюнешь ни в одиночку, ни с маленьким стартапом. К тому же, ты даже простых вещей, как выясняется, не знаешь. А там — целая куча тонкостей, о которых и я не знаю.
Я про LLVM ничего не знаю, написано что он и к Delphi подходит, ну ок. Тут разговор опять упирается в то, что в интернете принято смеяться над Delphi, но вот шароварщики знают, что для шаровары Delphi очень хорош.
Размножитель кода, который я предлагаю, выглядит очень простым проектом, при рвении его может один человек написать за два месяца (полагаю).
У меня ещё вопрос по C++. В Delphi, как я понимаю, нельзя инлайнить функции из других модулей, потому что каждый модуль (файл .pas) компилируется в файл .dcu с тем же именем, и далее .dcu файлы линкуются. Т.е. каждый модуль должен быть самодостаточным для собственной компиляции. А в плюсах с этим как?
И мне интересно, как же в плюсах решена проблема, что автоматически размножаемый код труднее отлаживать7
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Здравствуйте, Khimik, Вы писали:
K>Я про LLVM ничего не знаю, написано что он и к Delphi подходит, ну ок. Тут разговор опять упирается в то, что в интернете принято смеяться над Delphi, но вот шароварщики знают, что для шаровары Delphi очень хорош.
У тебя поразительная самоуверенность. Ты ничего не знаешь про компиляторы, но имеешь про них свое мнение.
K>Размножитель кода, который я предлагаю, выглядит очень простым проектом, при рвении его может один человек написать за два месяца (полагаю).
Он не нужен. Похожие техники используются в серьезных компиляторах. Там все не так просто, как ты думаешь. Это серьезная наука, ей активно занимаются.
K>У меня ещё вопрос по C++. В Delphi, как я понимаю, нельзя инлайнить функции из других модулей, потому что каждый модуль (файл .pas) компилируется в файл .dcu с тем же именем, и далее .dcu файлы линкуются. Т.е. каждый модуль должен быть самодостаточным для собственной компиляции. А в плюсах с этим как?
Это не свойство языка, а свойство реализации. В тех же плюсах компилятор может работать традиционным способом, когда каждый сишник компилируется отдельно, а может быть отдельный проход где-то в районе линковки, когда все модули уже скомпилированы и возможна глобальная оптимизация.
K>И мне интересно, как же в плюсах решена проблема, что автоматически размножаемый код труднее отлаживать7
Опять же, это не свойство языка, а свойство компилятора.
В gcc эта проблема решается плохо.
Re[7]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Khimik, Вы писали:
K>Я про LLVM ничего не знаю, написано что он и к Delphi подходит, ну ок.
Ну так узнай
K>Тут разговор опять упирается в то, что в интернете принято смеяться над Delphi, но вот шароварщики знают, что для шаровары Delphi очень хорош.
Когда-то был
K>Размножитель кода, который я предлагаю, выглядит очень простым проектом, при рвении его может один человек написать за два месяца (полагаю).
Ну сядь и напиши
K>У меня ещё вопрос по C++. В Delphi, как я понимаю, нельзя инлайнить функции из других модулей, потому что каждый модуль (файл .pas) компилируется в файл .dcu с тем же именем, и далее .dcu файлы линкуются. Т.е. каждый модуль должен быть самодостаточным для собственной компиляции. А в плюсах с этим как?
Я хз, что там в этой дельфи, а в плюсах inline функции должны быть видны везде, где используются, и компилятор уже сам решает, реально ли надо инлайнить, или делать вызов.
K>И мне интересно, как же в плюсах решена проблема, что автоматически размножаемый код труднее отлаживать7
Не знаю о какой проблеме ты говоришь. Видимо, в плюсах её не существует
Здравствуйте, Pzz, Вы писали:
K>>Я про LLVM ничего не знаю, написано что он и к Delphi подходит, ну ок. Тут разговор опять упирается в то, что в интернете принято смеяться над Delphi, но вот шароварщики знают, что для шаровары Delphi очень хорош.
Pzz>У тебя поразительная самоуверенность. Ты ничего не знаешь про компиляторы, но имеешь про них свое мнение.
Это один из лучших людей России, ученый и философ
K>>И мне интересно, как же в плюсах решена проблема, что автоматически размножаемый код труднее отлаживать7
Pzz>Опять же, это не свойство языка, а свойство компилятора.
Pzz>В gcc эта проблема решается плохо.
Здравствуйте, Pzz, Вы писали:
Pzz>Он не нужен. Похожие техники используются в серьезных компиляторах. Там все не так просто, как ты думаешь. Это серьезная наука, ей активно занимаются.
Сорри, у меня ощущение что вы сами не знаете по теме, просто привыкли отрицать мои идеи, и кидаете умные слова чтобы типа аргументировать. Можно какую-то конкретику по моим вопросам?
Мне такой размножитель кода пригодился бы (немного), и я мог бы его купить если это несложно, так что прошу поконкретнее.
То, что я предлагаю, называется метапрограммированием, в LLVM и gcc оно используется? Если сделать то что я предлагаю, дальше, возможно, можно будет придумать ещё какие-то фичи, использующие разбивку кода на несколько вариантов для разных компиляций.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[8]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Marty, Вы писали:
K>>У меня ещё вопрос по C++. В Delphi, как я понимаю, нельзя инлайнить функции из других модулей, потому что каждый модуль (файл .pas) компилируется в файл .dcu с тем же именем, и далее .dcu файлы линкуются. Т.е. каждый модуль должен быть самодостаточным для собственной компиляции. А в плюсах с этим как?
M>Я хз, что там в этой дельфи, а в плюсах inline функции должны быть видны везде, где используются, и компилятор уже сам решает, реально ли надо инлайнить, или делать вызов.
В первую очередь в плюсах нету модулей. До недавнего времени. Соответственно и проблемы нет. Что там сейчас в новых плюсах с модулями и inline не знаю, не очень интересно.
Но не могу порадоваться тому, что наш философ снова к нам пришел с идеями, которые он толком не продумал, но непременно кто-то должен их подхватить и реализовать.
No taxation without representation
Re[9]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Khimik, Вы писали:
K>Сорри, у меня ощущение что вы сами не знаете по теме, просто привыкли отрицать мои идеи, и кидаете умные слова чтобы типа аргументировать. Можно какую-то конкретику по моим вопросам?
Здравствуйте, Khimik, Вы писали:
Pzz>>Он не нужен. Похожие техники используются в серьезных компиляторах. Там все не так просто, как ты думаешь. Это серьезная наука, ей активно занимаются.
K>Сорри, у меня ощущение что вы сами не знаете по теме, просто привыкли отрицать мои идеи, и кидаете умные слова чтобы типа аргументировать.
Извини, мне не интересно разговариать на таком уровне.
K>Можно какую-то конкретику по моим вопросам?
Я приводил конкретику.
K>Мне такой размножитель кода пригодился бы (немного), и я мог бы его купить если это несложно, так что прошу поконкретнее.
K>То, что я предлагаю, называется метапрограммированием, в LLVM и gcc оно используется? Если сделать то что я предлагаю, дальше, возможно, можно будет придумать ещё какие-то фичи, использующие разбивку кода на несколько вариантов для разных компиляций.
Метапрограммированием называется возможность описания правил, с помощью которых автоматически генерируется код.
То, что ты предлагаешь, называется инлайнинг и loop unrolling. Любой взрослый компилятор умеет это делать. И делается это обычно не с помощью преобразования исходного текста а путем манипуляций с внутренним представлением кода, промежуточным между исходным текстом и выходным ассемблером,
Re[9]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Khimik, Вы писали:
K>Сорри, у меня ощущение что вы сами не знаете по теме, просто привыкли отрицать мои идеи, и кидаете умные слова чтобы типа аргументировать. Можно какую-то конкретику по моим вопросам? K>Мне такой размножитель кода пригодился бы (немного), и я мог бы его купить если это несложно, так что прошу поконкретнее. K>То, что я предлагаю, называется метапрограммированием, в LLVM и gcc оно используется? Если сделать то что я предлагаю, дальше, возможно, можно будет придумать ещё какие-то фичи, использующие разбивку кода на несколько вариантов для разных компиляций.
И грабить корованы.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[10]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Pzz, Вы писали:
Pzz>Метапрограммированием называется возможность описания правил, с помощью которых автоматически генерируется код.
Pzz>То, что ты предлагаешь, называется инлайнинг и loop unrolling. Любой взрослый компилятор умеет это делать. И делается это обычно не с помощью преобразования исходного текста а путем манипуляций с внутренним представлением кода, промежуточным между исходным текстом и выходным ассемблером,
Ну так как же отлаживать код, шагать по операторам, если они запутаны/размножены?
То что я предлагаю, возможно, можно использовать не только для инлайнинга/унроллинга, но и для других задач. Я полагаю это корректно называть метапрограммированием, потому что оно подразумевает вставку в код управляющих символов и дальнейшее преобразование кода в соответствии с этим. Например, к объявлению функции добавляем комментарий #fullinline, и размножатель инлайнит всё что есть в этой функции. Если добавить комментарий #fullqfor, размножатель размножает в ней все циклы.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[10]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, graniar, Вы писали:
K>>Сорри, у меня ощущение что вы сами не знаете по теме, просто привыкли отрицать мои идеи, и кидаете умные слова чтобы типа аргументировать. Можно какую-то конкретику по моим вопросам?
G>https://wiki.gentoo.org/wiki/GCC_optimization/ru
Мне бы что-нибудь такое по Delphi...
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[11]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Khimik, Вы писали:
Pzz>>То, что ты предлагаешь, называется инлайнинг и loop unrolling. Любой взрослый компилятор умеет это делать. И делается это обычно не с помощью преобразования исходного текста а путем манипуляций с внутренним представлением кода, промежуточным между исходным текстом и выходным ассемблером,
K>Ну так как же отлаживать код, шагать по операторам, если они запутаны/размножены?
У тебя одной строке исходного кода может соответствовать несколько мест в бинарном коде. Соответственно, если программа остановилась в любом из этих мест, отладчик должен показать ту строку, из которой этот код нагенерился. А если ты ставишь брекпойнт на этой строке исходного кода, в бинарном коде должно создаваться несколько брекпойнтов, во всех возможных местах.
K>То что я предлагаю, возможно, можно использовать не только для инлайнинга/унроллинга, но и для других задач. Я полагаю это корректно называть метапрограммированием, потому что оно подразумевает вставку в код управляющих символов и дальнейшее преобразование кода в соответствии с этим. Например, к объявлению функции добавляем комментарий #fullinline, и размножатель инлайнит всё что есть в этой функции. Если добавить комментарий #fullqfor, размножатель размножает в ней все циклы.
Ты предлагаешь ручную разметку применяемых методов оптимизации по исходному коду. Взрослые компиляторы так умеют. Это не называется метапрограммированием.
По определению, программирование — это прямое написание кода программы. Метапрограммирование — это написание кода, который порождает код программы.
Re[4]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Marty, Вы писали:
M>Это называется разворачивание циклов. Я так делал ручками в самом начале нулевых, начитавшись книжек мышаха. И некоторое время это даже помогало увеличить производительность. А потом, внезапно, оказалось, что компиляторы научились это делать сами, и на такие ручные оптимизации я уже лет 20 как забил
А мне доводилось программировать машинку с очень маленьким кешом инструкций и довольно медленной памятью. И там, неожиданно, оптимизация по размеру заметно ускоряла программу по сравнению с оптимизацией по скорости.
Re[4]: Венчурное инвестирование и криптовалюта с налогами
Здравствуйте, Marty, Вы писали:
K>>А разве не купят? Или скорее обратятся к автору — вот экзешник моей программы, переделайте его под Mac, если что непонятно — спрашивайте.
M>Не купят. Он нужен будет полутора криворуким калекам, которые на старте проекта не задумались над кроссплатформенностью и не написали свою абстракцию над ОС, и не додумались взять какой-либо готовый фреймворк типа Qt.
Из забавного. Сейчас наша страна (местами) массово переходит на линух. И у криворуких калек, которые вовремя не позаботились, кое-где подгорает. И подгорать будет еще больше и больше.