Цитата:
а проверить кто мешает? я не уверен, что получится быстрее, но проверить всегда возможно.
Цитата:
это еще зачем? речь идёт об оптимизации узких мест а не всего модуля в целом.
Цитата: по секциям исполняемого модуля
а проверить кто мешает? я не уверен, что получится быстрее, но проверить всегда возможно.
это еще зачем? речь идёт об оптимизации узких мест а не всего модуля в целом.
Цитата: по секциям исполняемого модуля
Проверять-то нужно поглобальней, чем просто тот кусочек, который "патчится".зачем? профилирование позволяет найти именно те кусочки, которые нужно оптимизировать, от оптимизации кода, не влияющего на скорость, толку особого всё равно не будет.
Да и не все критичные факторы я перечислил. Есть ещё предсказание ветвлений, переупорядочивание подвыражений, подмена элементарных операций, оптимизация нагрузки на двухканальную шину... Что-то ещё наверняка есть, чего я не знаю.
В общем, "из спортивного интереса" я б с ним соревноваться не стал.О соревновании это вы выдумали, я лишь упомянул, что можно попробовать кусок на ассемблере и взглянуть на возможность дальнейшей оптимизации кода после компилятора, а не заменять вслепую часть программы на ассемблерный вариант просто веря, что от этого быстрее станет.
Мда, с товарищем уже даже спорить не хочется, так как убедить хотя бы призадуматься невозможно в принципе...
My advice: use the best or the most popular language for the platform.в переводе, если вы выбираете язык под конкретную платфору, то берите либо самый популярный язык, либо же самый оптимальный, если вам нужен быстрый запуск программы, то следует отказаться от Java или .NET
Don't bother with "slightly better but less popular" category. So, if
you target .NET, use C# (most popular) or Boo/Nemerle (best), don't
bother with VB.NET, J# and others.
If you target JVM, use Java (also take a look at Scala - I don't like
it too much because it seems more complex than necessary).
If you must have fast startup times, or must integrate with OS API, use
C++ (most popular) or D (best). Maybe Eiffel is also worth considering.
D is not (yet) very good for real-time programming (see all garbage
collection, deterministic finalization threads for reasons), but Walter
will likely fix that soon.
I personally use D for OS-integrated projects and Java for all others.
If Boo for JVM (or native) existed, I would definitely use Boo (I'm almost
tempted to write JVM port of Boo myself).
Gregor Richards has found a way to compile D code to JVM compatibleтак что есть вероятность получить как быстрый и удобный язык, так и все преимущества Java.
programs, that can be run in a JVM. So, if this is taken a bit further,
maybe we can even say "D runs in a VM, too, if you want".
занимаемая память меня мало волнуетну вот так всегда, занимаемая память разработчиков мало когда волнует, они почему-то считают что для их программы будет выделен отдельный высокопроизводительный сервер
... и что значит «сделаете»? по скорости выполнения?Ну да. Мне компилятор в процессе компиляции сам будет "строить" наиболее эффективный цикл независимо от сложности выражения. D так умеет? Или ассемблер? Впрочем, на ассемблере можно самомодифицирующийся код навернуть, но по сложности патчить исполняемый код никак не конкурент шаблонному метапрограммированию.
А то что Ява быстрей чем ПХП я уже проверял.
Но алгортим программы он за вас, конечно же, кардинально не перепишет — если есть другой, более эффективный способ решить задачу, то лучше воспользоваться им, а компилятор уже позаботиться, чтобы этот код хорошо работал.А кардинально и не надо. Достаточно объяснить компилятору, как должен выглядеть оптимальный цикл, т.е. снабдить его способом построения такого цикла для произвольного выражения. Это и будет метаалгоритмом. Когда он его выполнит при компиляции, т.е. наинстанцирует шаблонов, дальше начнётся обычная оптимизация.
т.е. снабдить его способом построения такого цикла для произвольного выраженияодно дело оптимизировать выражения, и совсем другое — алгоритмы, к тому же, если вы в выражении вызываете кучу функций почём зря, то компилятор не сможет это определить и ваше выражение будет выполняться на порядок медленнее, чем могло бы, если бы вы заметили, что функции всегда выдают один и тот же результат.
Или вы считаете что PHP и С++ языки из одной категории?
Если у меня получилось так, что мне в программе потребуется решить квадратное уравнение, но при этом его коэффициенты являются константами, то из трёх вариантов - решить в run-time, решить на бумажке и подставить в программу результаты (фиии!), решить в compile-time - я предпочту последнее.а как насчёт варианта «решить в run-time и подставить в программу», почему обязательно на бумажке считать? К тому же очень малую часть можно реализовать на этапе компиляции.
Заметь, выражение - это тоже константная сущность. Как в программу вобъёшь, так оно и откомпилится (калькуляторы не рассматриваемоднако нас интересует результат выражения и причём тут калькуляторы? разве eval(x) сильно отличается от function(x)?
Чтобы ты не сомневался в потенциале шаблонного метапрограммированияВ пользе шаблонов никто и не сомневается, вот только назначение их не в рассчёте чего-либо при компиляции, а в автоматической генерации кода.
Потом рассказывал, в каком шоке был учитель.оффтопик: гы-гы-гы дочка в школе: «а у меня папа — математик! »
И PHP я вообще-то не с С++ сравнивал, раскрой глаза пошире!XDiaBLo, вы просто сначала высказались, что Java быстрее C++, а потом что вы проверяли как она быстрее PHP, вроде как в подтверждение того, что она самая быстрая (байткод против компиляции), сложилось впечатление, что вы разделили языки на «Java» и «не-Java»
Сейчас век интернета, и я думаю перспективнее языки направленные на интернет приложения.а какие именно осбенности языков на них направленны? Тут вопрос лишь в том, на какой платформе вам нужно писать программу, а интернет-приложение при наличии собственного сервера можно делать на чём угодно, способного вызывать внешние модули или имеющего встроенные средства для работы с сетью.
А что самая быстрая я не утверждал!!! … Не разделяю мир на Ява и не-Ява. И предпочитаю не разговаривать с теми, кто коверкает мои слова.я и не коверкал, лишь сказал что косвенно сложилось впечатление, но забудем об этом — рад, что я ошибся
Сейчас век интернета, и я думаю перспективнее языки направленные на интернет приложенияинтернет-приложения могут и измениться со временем — сейчас клиентская часть используется лишь в качестве лёгкого терминала и не очень заметна тенденция на оснащение всех нас такими терминалами, скорее тут лишь узкое направление на мобильность приложений
"Сейчас век интернета, и я думаю перспективнее языки направленные на интернет приложения."Перспективнее не сами языки, а их изучение. Сейчас необходимо знать JavaScript, ActionScript, Java и C#, а также соответствующие платформы. С++ идёт отдельно и находится в другой области применения. (точнее у первых языков область применения ограничена)
Ребята хочу у вас спросить стоит ли сейчас изучать C++ Builder или вместо него надо изучать Visual C++?надо в первую очередь язык изучать, а потом уже IDE, набор библиотек и WinAPI
C++ Builder хорош тем, что в нем легко создаются прикладн. пр-мыприкладные программы в C# еще проще создаются, но это более заслуга IDE и платформы, чем языка
Qraizer, если вы имели ввиду решение выражения типа sqrt(4) или поиск корней заданного! уравнения во время компиляции, то это никак не относится к оптимизации выражения от X или решения произвольного уравнения, где коэффициенты — переменные.Кажется, до меня тоже кое-что дошло. Что такое "шаблоны выражений", представление имеется? Если нет, то большую часть поста можно просто опустить, что и делаю. Замечу только, что эту ссылку я привёл только для того, для чего и указал - для демонстрации потенциала шаблонов. К "шаблонам выражений" это не имеет никакого отношения.
Кстати в C шаблоны обрабатываются препроцессором, а не компилятором.Кстати, в C шаблонов нет. Препроцессор - это такой же "механизм шаблонов", как машина Тьюринга - "язык для практического применения". Боюсь, что я даже приуменьшил.
И пример рассчёта констант в процессе компиляции имеет мало общего с автоматической оптимизацией кода, поскольку фактически они рассчитываются другим языком, с таким же успехом пожно влепить перед компилятором любой обработчик сриптового языка, который рассчитает выражения по предварительно заданным алгоритмам.В корне неверно. Во-первых, шаблоны - часть языка, а отнюдь не другой язык, во-вторых, "с таким же успехом" не получится, ибо это будет использованием двух языков, а если рассмативать ещё и такие варианты, то этот топик просто теряет смысл, ибо все тут признают, что сАмой перспективностью будет именно связка нескольких.
В пользе шаблонов никто и не сомневается, вот только назначение их не в рассчёте чего-либо при компиляции, а в автоматической генерации кода.Ага, вот значит как. А назначение классов тогда в реализации принципов ООП? Интересная точка зрения.
Что такое "шаблоны выражений", представление имеется?имеется, могу только заметить, что они лишь сокращают написание требуемого количества кода, а не выполняют оптимизацию — запись требуемого конечного алгоритма в ручную может дать больший эффект, к тому же наличие «лишних» операций шаблоны убрать никак не способны. Поэтому я говорю, что в узких местах не надо надеятся на то, что ваши шаблоны с компилятором создатут вам идеальный код, а попробовать улучшить алгоритм.
В корне неверно. Во-первых, шаблоны - часть языка, а отнюдь не другой языкПриношу извенения — перепутал шаблоны и макросы.
А назначение классов тогда в реализации принципов ООП?Класс скрывает разделяемый код, а шаблон — копируемый. Или я не прав?
Страницы: 1234567891011121314151617181920212223
Предыдущая тема: Подскажите сайт о написании компьютерных игр.