Ты бы всетки ключики привел. От них много чего зависит. Что трудно Copy-Paste сделать? AVC>Повторяю также, что ключи компиляции Dry.mod находятся в самом исходном файле.
Это типа круто? А по моему ключи компиляции должны лежать в файле проекта, а в исходниках им делать нечего. AVC>Я то попросту подумал, что Вам неловко будет повторять мысль, что MSVC 8 (beta 1!!! ) в 12(!) раз эффективнее, чем MSVC 6. Ан, нет...
Теоритически это возможно но на практике скорей всего у тебя что-то не то с ключами компилятора.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
AVC пишет:
> C>Что, мне опять запускать XDS и сравнивать то, что он нагенерит, с > C>результатом компиляции С? Не будет оно оптимальным, даже близко не > будет. > C>Кто-то там, я помню, кричал про трехкратное превосходство XDS над С в > C>скорости, но так и не привел версии и ключей компилятора. > Это, уж как бы поделикатнее это сказать... вранье-с. > http://www.rsdn.ru/Forum/Message.aspx?mid=995268&only=1
> Обратите внимание, дожидается Вашего ответа с 19 января.
Извиняюсь, не увидел сообщение. VC6 у меня нет, есть VC7.1 и VC8. Ключи
такие:
==============
/Ox /Og /Ob2 /Oi /Ot /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS"
/FD /EHsc /MT /GS /Fo"Release/" /Fd"Release/vc80.pdb" /W3 /nologo /c
/Wp64 /Zi /TP
==============
Вдобавок, в коде теста тоже нужно пару мест поправить.
> Повторяю также, что ключи компиляции *Dry.mod* находятся в самом > исходном файле. > Я то попросту подумал, что Вам неловко будет повторять мысль, что MSVC > 8 (beta 1!!! ) в *12*(!) раз эффективнее, чем MSVC 6. Ан, нет...
Вполне может быть. VC8 заточена под новые процессоры, в отличие от
древней VC6.
На случай "плохого" выбора ключей, попросил Cyberax выбрать ключи самому.
AVC>>Повторяю также, что ключи компиляции Dry.mod находятся в самом исходном файле. WH>Это типа круто? А по моему ключи компиляции должны лежать в файле проекта, а в исходниках им делать нечего.
Это чтобы хоть что-нибудь покритиковать?
Если весь "проект" состоит из одного файла (и никакого развития проекта не предполагается), то, IMHO, допустимо установить ключики и в исходнике, не заводя отдельного файла проекта.
Чтобы, так сказать, "не множить сущности без необходимости".
AVC>>Я то попросту подумал, что Вам неловко будет повторять мысль, что MSVC 8 (beta 1!!! ) в 12(!) раз эффективнее, чем MSVC 6. Ан, нет... WH>Теоритически это возможно но на практике скорей всего у тебя что-то не то с ключами компилятора.
У меня?!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Cyberax пишет:
> Извиняюсь, не увидел сообщение. VC6 у меня нет, есть VC7.1 и VC8. Ключи > такие: > ============== > /Ox /Og /Ob2 /Oi /Ot /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" > /FD /EHsc /MT /GS /Fo"Release/" /Fd"Release/vc80.pdb" /W3 /nologo /c > /Wp64 /Zi /TP > ============== > Вдобавок, в коде теста тоже нужно пару мест поправить.
Вдогонку, попытался вникнуть в этот тест. Результат: ну и &%@#&$% же
это. Строки используются C-шные, без всякой оптимизации. Большую часть
времени в func0 тратится на strcmp и т.д. Простая замена Сшных строк на
что-нибудь поприличнее даст еще больший прирост скорости.
Работу с массивы можно тоже пооптимизировать (boost::multi_array — наш
друг).
Здравствуйте, AVC, Вы писали:
AVC>В Си++ типизация сильнее, чем в Обероне?
Да. AVC>Это Вы баек о пользе шаблонов в Си++ наслушались?
Нет. Я их распространяю. Ибо сам активно использую шаблоны и прекрасно знаю о чем говорю. AVC>А как Вам конструкции вида
[q]WH>>Весьма "разумно" особенно учитывая что типизация в С++ сильнее чем в обероне... То что ее можно послать другой вопрос... в обероне (как мы выяснили
За подобный код нужно трывать руки и навсегда отлучать от компилятора. Исключения состовляют лишь библиотеки низкого уровня при этом их интерфейс должен быть таким чтобы исключить привидение не к тому типу. См boost::function там в нутри используются подобные фокусы но все сделано так что при использовании самого шаблоны boost::function типизация полностью контролируется компилятором.
А если подобные фокусы не загнаны под пулинепробиваемый интерфейс то автора в кандалы и в сибирь снег убирать.
К томуже такое посылание типов не чуждо и оберону... Так шта...
AVC>Зато позволяют себе правительства Канады и Великобритании.
Это их проблемы. А кстати они раздрешают BrainFack? Или WhiteSpace? Это же супер языки... такие мощьные концепции!
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Cyberax, Вы писали:
C>Извиняюсь, не увидел сообщение. VC6 у меня нет, есть VC7.1 и VC8. Ключи C>такие: C>============== C>/Ox /Og /Ob2 /Oi /Ot /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" C>/FD /EHsc /MT /GS /Fo"Release/" /Fd"Release/vc80.pdb" /W3 /nologo /c C>/Wp64 /Zi /TP C>============== C>Вдобавок, в коде теста тоже нужно пару мест поправить.
Просьба: если есть возможность, отправьте мне исправленный Вами текст по адресу:
(чтобы не было расхождений).
А я посмотрю, какой результат у меня получится.
Чем Бог не шутит...
C>Вполне может быть. VC8 заточена под новые процессоры, в отличие от C>древней VC6.
Не верю! (с) Станиславский
Впрочем, при первой же возможности проведу эксперимент.
У меня тут в эпсилон-окрестности 8-й версии пока ни у кого нет.
Возможно, потому что мы PC используем в основном для кросс-отладки.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Cyberax, Вы писали:
C>Вдогонку, попытался вникнуть в этот тест. Результат: ну и &%@#&$% же C>это. Строки используются C-шные, без всякой оптимизации. Большую часть C>времени в func0 тратится на strcmp и т.д. Простая замена Сшных строк на C>что-нибудь поприличнее даст еще больший прирост скорости.
C>Работу с массивы можно тоже пооптимизировать (boost::multi_array — наш C>друг).
В исходный код теста Drystone нельзя вносить ни каких изменений! Иначе он теряет свой статус. Любое изменение превращает его в совершенно другой тест. (Ну, естественно, поменять количество иттераций можно)
Например, именно поэтому нельзя написать исходник Drystone для Component Pascal — буквальный перевод со старого Паскаля невозможен (не будет компилироваться), а "вольная интерпретация" превращает его в другой тест не имеющий признанного статуса теста Drystone.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, AVC, Вы писали:
AVC>>В Си++ типизация сильнее, чем в Обероне? WH>Да. AVC>>Это Вы баек о пользе шаблонов в Си++ наслушались? WH>Нет. Я их распространяю. Ибо сам активно использую шаблоны и прекрасно знаю о чем говорю.
Логика учит : чтобы утверждать, что типизация в Си++ сильнее, чем в Обероне, надо хорошо представлять себе не только Си++, но и Оберон.
Или на Си++ программистов это уже не распространяется?
AVC>>А как Вам конструкции вида WH>[q]WH>>Весьма "разумно" особенно учитывая что типизация в С++ сильнее чем в обероне... То что ее можно послать другой вопрос... в обероне (как мы выяснили
Зря Вы за это "уцепились". Получается как в известной пословице про "услышанный звон".
В указанном Вами месте я отвечал на вопрос, если в Обероне в принципе средства низкоуровневого программирования.
Но дело в том, что в Обероне средства низкоуровневого программирования отделены от основного языка.
Необходимо использовать (псевдо)модуль SYSTEM, чего нельзя скрыть, и что может быть и запрещено, если это потребуется для безопасности системы.
А в Си/Си++ — это не так.
Там без приведения типов — никуда. Просто Вы пытаетесь спрятать их подальше (в boost::function, к примеру), чтобы глаза не мозолили.
Мало того, что это не решает проблему в корне, но еще и ухудшает читабельность.
С новыми наворотами boost Си++ уже не три года изучать надо, как по средней статистике, а еще больше.
WH>
WH>(int (*)())
WH>
WH>это посылание типизации WH>За подобный код нужно трывать руки и навсегда отлучать от компилятора. Исключения состовляют лишь библиотеки низкого уровня при этом их интерфейс должен быть таким чтобы исключить привидение не к тому типу. См boost::function там в нутри используются подобные фокусы но все сделано так что при использовании самого шаблоны boost::function типизация полностью контролируется компилятором. WH>А если подобные фокусы не загнаны под пулинепробиваемый интерфейс то автора в кандалы и в сибирь снег убирать.
Я уже заметил, что у программистов на Си++ мышление повернуто несколько в садистскую плоскость: кого/что убить... в кандалы... в Сибирь...
Еще стандартны фразы о "кривых ручках" и "ошибках в ДНК".
Только все эти заклинания слабо им помогают...
AVC>>Зато позволяют себе правительства Канады и Великобритании. WH>Это их проблемы. А кстати они раздрешают BrainFack? Или WhiteSpace? Это же супер языки... такие мощьные концепции!
Наверное, Канаде и Англии плохо приходится, если у них такие ПРОБЛЕМЫ!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
СГ>В исходный код теста Drystone нельзя вносить ни каких изменений! Иначе он теряет свой статус. Любое изменение превращает его в совершенно другой тест. (Ну, естественно, поменять количество иттераций можно)
СГ>Например, именно поэтому нельзя написать исходник Drystone для Component Pascal — буквальный перевод со старого Паскаля невозможен (не будет компилироваться), а "вольная интерпретация" превращает его в другой тест не имеющий признанного статуса теста Drystone.
Круто, а если бы они там Sleep местами повставляли ?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, AndrewJD, Вы писали:
AJD>Круто, а если бы они там Sleep местами повставляли ?
Ну, если бы...
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Логика учит : чтобы утверждать, что типизация в Си++ сильнее, чем в Обероне, надо хорошо представлять себе не только Си++, но и Оберон.
А что его представлять? Примитивный язык в которм коллекции либо полиморфные либо копипастные. Те либо дублирование кода, а это дублирование ошибок... либо все проверки в рантайме медленно и не надежно.
А то что нет злых кастов на уровне языка так это дело поправляется (псевдо)модулем SYSTEM...
Да и без этого можно систему завалить. Делаем запутаный граф объектов которой в какомто левом модуле(который SYSTEM не использует)цепляется за глобальную переменную и привет... ГЦ умер...
AVC>Зря Вы за это "уцепились". Получается как в известной пословице про "услышанный звон". AVC>В указанном Вами месте я отвечал на вопрос, если в Обероне в принципе средства низкоуровневого программирования.
Возможность есть. А заначит есть возможность напакостить. AVC>Но дело в том, что в Обероне средства низкоуровневого программирования отделены от основного языка.
Но это не мешает их использовать. AVC>Необходимо использовать (псевдо)модуль SYSTEM, чего нельзя скрыть, и что может быть и запрещено, если это потребуется для безопасности системы. AVC>А в Си/Си++ — это не так.
В С++ тоже можно административно запретить использовать некоторые конструкции. И в чем разница? AVC>Там без приведения типов — никуда.
А! То-то у меня в последнем проекте ни одного небыло. (кроме dynamic_cast'ов) AVC>Просто Вы пытаетесь спрятать их подальше (в boost::function, к примеру), чтобы глаза не мозолили.
Вот там они и сидят. В принципе они только и нужны для написания библиотек низкого уровня. Короче можешь считать что они спрятаны в нутрь компилятора.
Кстати а как на счет ошибок в компиляторе оберона?... AVC>Мало того, что это не решает проблему в корне, но еще и ухудшает читабельность.
Ты это можешь расказывать тем кто на С++ не писал.
AVC>С новыми наворотами boost Си++ уже не три года изучать надо, как по средней статистике, а еще больше.
А! Ну-ну. Если человек не совсем пробка он у меня через полгода на С++ с STL и boost'ом писать будет.
А пробка и на обероне таких дров наломает что мало не покажется.
AVC>Я уже заметил, что у программистов на Си++ мышление повернуто несколько в садистскую плоскость: кого/что убить... в кандалы... в Сибирь...
В данный момент я программист на C#. И вобще я могу писать на чем угодно. Просто раздаражают люди которые пытаются навязать какуюто поделку в качестве панацеи. Вот и получаются резкии фразы.
AVC>Только все эти заклинания слабо им помогают...
Мне они не нужны. У меня проблем нет.
AVC>Наверное, Канаде и Англии плохо приходится, если у них такие ПРОБЛЕМЫ!
Не знаю. Я там небыл. Хотя про Канадских программистов расказывают такое... что они якобы хуже Индусов...
Кстати ты не ответил как там с BrainFack'ом?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Cyberax, Вы писали:
C>============== C>/Ox /Og /Ob2 /Oi /Ot /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" C>/FD /EHsc /MT /GS /Fo"Release/" /Fd"Release/vc80.pdb" /W3 /nologo /c C>/Wp64 /Zi /TP C>============== C>Вдобавок, в коде теста тоже нужно пару мест поправить.
Исправил заголовки функций (правда, далеко не в двух местах).
Использовал Ваши ключи.
Все, кроме /Wp64, /GS, /GL (6-й компилятор их не знает).
Результат: 3076923.
(против 8000000 у XDS).
Размер файла: 86065.
Наверное, надо искать MSVC 8.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, WolfHound, Вы писали:
WH> Вот там они и сидят. В принципе они только и нужны для написания библиотек низкого уровня. Короче можешь считать что они спрятаны в нутрь компилятора.
Если бы да кабы, то в носу бы выросли грибы.
WH> Кстати а как на счет ошибок в компиляторе оберона?...
Здравствуйте, WolfHound, Вы писали:
WH> Хотя про Канадских программистов расказывают такое... что они якобы хуже Индусов...
Watcom, Maple, QNX... пожалуй, достаточно.
Здравствуйте, WolfHound, Вы писали:
AVC>>Логика учит : чтобы утверждать, что типизация в Си++ сильнее, чем в Обероне, надо хорошо представлять себе не только Си++, но и Оберон. WH>А что его представлять? Примитивный язык в которм коллекции либо полиморфные либо копипастные. Те либо дублирование кода, а это дублирование ошибок... либо все проверки в рантайме медленно и не надежно. WH>А то что нет злых кастов на уровне языка так это дело поправляется (псевдо)модулем SYSTEM... WH>Да и без этого можно систему завалить. Делаем запутаный граф объектов которой в какомто левом модуле(который SYSTEM не использует)цепляется за глобальную переменную и привет... ГЦ умер...
Шаблонов, правда, в Обероне нет (да и не надо, хотя и есть версии Оберона, которые их поддерживают).
Все же остальные Ваши утверждения — пальцем в небо.
Особенно смешна идея зацепить граф объектов за глобальную переменную.
Т.е. об указателях в Обероне Вы не знаете ничего.
AVC>>В указанном Вами месте я отвечал на вопрос, если в Обероне в принципе средства низкоуровневого программирования. WH>Возможность есть. А заначит есть возможность напакостить.
Если будет важна безопасность, Вам возможности "напакостить" не предоставят.
AVC>>Но дело в том, что в Обероне средства низкоуровневого программирования отделены от основного языка. WH>Но это не мешает их использовать.
Если они будут запрещены на этом уровне, Вы не сможете их использовать.
AVC>Мало того, что это не решает проблему в корне, но еще и ухудшает читабельность. WH>Ты это можешь расказывать тем кто на С++ не писал.
Вранье!
Это уже начинает утомлять.
AVC>>С новыми наворотами boost Си++ уже не три года изучать надо, как по средней статистике, а еще больше. WH>А! Ну-ну. Если человек не совсем пробка он у меня через полгода на С++ с STL и boost'ом писать будет. WH>А пробка и на обероне таких дров наломает что мало не покажется.
Ну да, вечная песня о крутости программистов на Си/Си++.
То-то я вечно застаю их сидящими в отладчиках.
AVC>>Я уже заметил, что у программистов на Си++ мышление повернуто несколько в садистскую плоскость: кого/что убить... в кандалы... в Сибирь... WH>В данный момент я программист на C#. И вобще я могу писать на чем угодно.
Вы хотите меня ознакомить с Вашим резюме?
WH>Просто раздаражают люди которые пытаются навязать какуюто поделку в качестве панацеи. Вот и получаются резкии фразы.
Учитывая, что, как выяснилось, об Обероне Вы знаете мало, Ваши резкие фразы несколько преждевременны и говорят, скорее, о плохих нервах.
К тому же, я не помню, чтобы я говорил об Обероне как о панацее или пытался кому-нибудь его навязать.
Говорил только о его применимости в некоторых случаях.
AVC>>Только все эти заклинания слабо им помогают... WH>Мне они не нужны. У меня проблем нет.
Рад за Вас!
AVC>>Наверное, Канаде и Англии плохо приходится, если у них такие ПРОБЛЕМЫ! WH>Не знаю. Я там небыл. Хотя про Канадских программистов расказывают такое... что они якобы хуже Индусов...
Логика понятна. Раз канадское правительство наложило ограничения на применение Си++, то и канадские программисты — плохие.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Здравствуйте, AVC, Вы писали:
AVC>Приношу Курилке мои извинения (даже если он и вправду любит Си++ такой же безумной любовью, как и Зверек Харьковский )!
Принимается, даже несмотря на то, что я плюсы люблю, незнаю правда про безумность
Здравствуйте, Курилка, Вы писали:
AVC>>Приношу Курилке мои извинения (даже если он и вправду любит Си++ такой же безумной любовью, как и Зверек Харьковский )! К>Принимается, даже несмотря на то, что я плюсы люблю, незнаю правда про безумность
Спасибо!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Шаблонов, правда, в Обероне нет (да и не надо,
А ну-ну... AVC>хотя и есть версии Оберона, которые их поддерживают).
Тем лучше. AVC>Все же остальные Ваши утверждения — пальцем в небо.
Правда? AVC>Особенно смешна идея зацепить граф объектов за глобальную переменную. AVC>Т.е. об указателях в Обероне Вы не знаете ничего.
ГЦ он и в африке ГЦ и сыпится на хитрых графах которые цепляются за стек или статические переменные очень хорошо.
AVC>Если будет важна безопасность, Вам возможности "напакостить" не предоставят.
При жилании можно напакостить всегда. А по ошибки это еще проще.
AVC>Если они будут запрещены на этом уровне, Вы не сможете их использовать.
А какже SYSTEM? Или модули использующие его?
AVC>Вранье! AVC>Это уже начинает утомлять.
Это boost::function уменьшает читабельность? Вот это действительно вранье.
AVC>Ну да, вечная песня о крутости программистов на Си/Си++.
Ну да вечная песьня об убогости С++... но почемуто у меня с ним проблем не больше чем у меня сейчас с C#. AVC>То-то я вечно застаю их сидящими в отладчиках.
Сейчас (работая на C#) я в отладчике провожу времени столькоже как и при работе на С++.
AVC>Учитывая, что, как выяснилось, об Обероне Вы знаете мало,
О! Да ты знаешь что я знаю? Ты телепат? AVC>Ваши резкие фразы несколько преждевременны и говорят, скорее, о плохих нервах.
Да ты еще и психолог? AVC>К тому же, я не помню, чтобы я говорил об Обероне как о панацее или пытался кому-нибудь его навязать.
Прямо может и не говорил но как еще расценивать заявления что на обероне нельзя накосячить? AVC>Говорил только о его применимости в некоторых случаях.
О! Уже прогрес.
WH>>Не знаю. Я там небыл. Хотя про Канадских программистов расказывают такое... что они якобы хуже Индусов... AVC>Логика понятна. Раз канадское правительство наложило ограничения на применение Си++, то и канадские программисты — плохие.
Не вижу связи между моей фразой и твоим выводом.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Остановлюсь только на одном моменте.
AVC>>Особенно смешна идея зацепить граф объектов за глобальную переменную. AVC>>Т.е. об указателях в Обероне Вы не знаете ничего. WH>ГЦ он и в африке ГЦ и сыпится на хитрых графах которые цепляются за стек или статические переменные очень хорошо.
Дело в том, что указатель в Обероне может указывать только на объект, расположенный в куче и не может указывать ни на стековую, ни на статическую переменную.
Указатель получает свое значение только следующими путями:
1) NEW(p) — создать новый объект;
2) p := q; присвоить p значение другого валидного указателя q;
3) p := NIL; указатель никуда больше не указывает.
В начале указатель инициализирован NIL.
Т.е. указатель либо указывает на объект в куче, либо равен NIL.
И как же нам "зацепить" граф объектов за стек или статические переменные?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Дело в том, что указатель в Обероне может указывать только на объект, расположенный в куче и не может указывать ни на стековую, ни на статическую переменную. AVC>Указатель получает свое значение только следующими путями:
AVC>1) NEW(p) — создать новый объект; AVC>2) p := q; присвоить p значение другого валидного указателя q; AVC>3) p := NIL; указатель никуда больше не указывает.
AVC>В начале указатель инициализирован NIL. AVC>Т.е. указатель либо указывает на объект в куче, либо равен NIL. AVC>И как же нам "зацепить" граф объектов за стек или статические переменные?
ГЦ обыкновенный. Такойже как и везде. И валистся аналогично. А под словом зацепить за стек или статическую переменную я имел в виду что на стеке или в качастве статичекой переменной делаем указатель и присваиваем ему указатель на один из объектов графа объектов(которые ссылаются друг на друга)
А теперь забываем исделать AVC>3) p := NIL; указатель никуда больше не указывает.
Все! Граф будет жить вечно. И такие ошибки уже были например в RSDN@Home(та софтина в которой я пишу этот пост) Да да утечки памяти в программе с ГЦ это реальность. А про утечки внешних ресурсов я вобще молчу...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн