VD>То что ты считаешь приемуществом С++ на самом деле является его недостатком. Та же раздельная декларация — это убогость доставщеяся в наследство от С. Необходимость предварительной декларазции вынуждает разделять код на декларазию и реализацию. В шарпе совершенно все равно где и кода встретися некий тип. Это позволяет думать об алгоритме и структурах данных, а не о расположении кода в файлах. Что значитель облегчает работу и упрощает дизайн.
Кстати да. С появлением современных технологий требование от новичка понимания отличий модели памяти compact от модели памяти small выглядит несколько нелепым. В этом смысле шарп — значительно более академичный язык. Ну и вообще дотнет как платформа. Там даже ассемблер можно читать, он не намного сложнее форта. Программисты на плюсах как правило восторгаются красивыми конструкциями (большая часть которых, кстати, появилась в языке относительно недавно), совершенно забывая о том ужасе, который можно увидеть, просто опустив глаза. Чудеса линковки и раздельной компиляции как раз относятся к тому мусору, который болтается у плюсов под ногами с самого рождения.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, vdimas, Вы писали:
V>Я писал в разное время разные менеджеры памяти. Так вот что характерно, что легко удается получить очень большую скорость выделения памяти, быстрее даже, чем это делает дотнетовский менеджер. Однако, операция возврата памяти обратно менеджеру всегда получалась довольно долгой (я даже играл с такой вещью, как "отложенный возврат", т.е. просто ставил куски памяти в очередь на возврат, и вызывал периодически системную ф-ию для обработки этой очереди).
Угу. Истинно так. Поскольку менеджер сливает соседние блоки в один и переупорядочивает дерево свободных блоков.
V>Подход дотнета очень похож. В нем операция возврата памяти еще более длительная и сложная, но она очень удачно отложена.
Правильно, поскольку память по-прежнему одна (фон-Нейман, однако) и так или иначе её приходится делить. Всё, что здесь можно выиграть — это убрать лишние синхронизации.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Hello, vdimas!
v> (я его не юзаю, например, у меня и мест в программе нет, где бы такое v> случилось... давно уже юзаю набор смартпоинтеров собственного v> изготовления и забыл про эти вещи раз и навсегда)
Здравствуйте, VladD2, Вы писали:
VD>Это все стандартные тесты? Могу попробывать прогнать на более мощном железе. AMD 64 3500+ ATI 9800 Pro и P4 3.0 Nvidia 6800 GT.
Для этого SDK качать надо, да и не тесты это, просто примеры...
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, LSL, Вы писали:
LSL>>Графика выводится через собственные алгоритмы на ассемблере. Т.е. сторонние API не используются.
VD>И куда она выводится? В GDI что ли? К тому же втом самом порте весь асм был похерен (переписан обратно на С) и вроде все работает. По медленнее, но вполне приемлемо.
VD>Все же DD там вроде был. Иначе бы на разрешениях 1280*1024 и выше был бы смертельный тормоз. А он вроде как ничего так себе бегает.
У меня как раз порт. 50% Software rendering'а написана на ассемблере.
DD там есть и что-то ещё... DIB и SW. И всё это для инициализации, установки палитры...
А графика выводится через собственные алгоритмы на ассемблере и си.
Здравствуйте, LSL, Вы писали:
LSL>Для этого SDK качать надо, да и не тесты это, просто примеры...
А. Ну, их я запускал еще когда DX9 появился. И у меня тоже результаты были почти идентичные у менеджед и анменеджед примеров. Просто я их названия на память не помню.
Я уж не знаю как у FR там огромная разница получилась.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Это все на английском. Да и не море это. А на русском по дотнету форумов хватает, а по питону я даже и не видел.
FR>Я имею в виду сам принцип, минимум встроенных средств, все остальное в библиотеках
А где иначе? Другое дело, что библиотеки тоже разные бывают.
FR>Ладно это все фигня, надо на реальных задачах смотреть.
Ну, реальную игру я смотел. Правда у меня сейчас машина очень шустрая, но все же. Ощущения от игры прекрасное. Тормозов нет. Скролинг плавный. Зверющки бегают без запинки. Все в 3D. А вот рэйтивный Варкрафт на P4 3.0 тормозил.
FR>понимаешь когда что-то слишком усиленно рекламируют, это почти всегда значит FR>что на самом деле все не так радужно как хотят показать.
Рекламируют — это когда продать хотят. Я же тебе ничего продавать не хочу. Я просто выражаю свои ощущения. И делюсь тем что знаю.
FR>Я там по форумам немного лазил, писали что быстрее.
Дык я тебе и говорю, что возможно. Но заслуги Шарпа и дотнета в этом нет. Уж в этом то я очень неплохо разбираюсь.
А вот что действительно быстрее, так это скорость разработки и отладки.
FR>Да и насчет простоты написания объем-то исходников практически одинаков с плюсами
Сравнивать нужно объем игры. Потом объем объему розть. Код шарпа читается намного олее просто и одназначно. А стало быть поддерживать и развать его проще. Ну, это точно так же как с Питоном. К тому же еще ненадо забывать о рефакторинге. Фишки вроде студии 2005 и РеШарпера очень сильно поднимают скорось разработки больших проекто.
VD>>А вот это уже выдумки.
FR>Ну загрузи сам и проверь, у меня медленее.
LSL привел свежую статистику.
FR> Кроме того шарповые версии постоянно FR>подтормаживают и всегда вешаются, но не буду сильно к бете придиратся.
Вот как-то ни разу не видел. Какой из самплов у тебя тормозил?
FR>Насчет того что язык не в чем ни уступает очень спорно FR>Питон выше уровнем чем C# и подерживает больше парадигм.
Не думаю, что он сильно выше уровнем. Хотя судить не буду, все же я Питон совсем не знаю. Если ты продемонстриуешь эту высокоуровенвость, то буду очень признателен, а сам постараюсь сделать тоже самое на Шарпе, чтобы можно было сравнить.
FR>Проблема в другом, вот простой пример, java сейчас на таких тестах практически очень близка к плюсам, но в реальных приложениях почему то тормозит.
Ну, оба утверждения спорны.
1. Ява все же отстает даже на таких тестах.
2. Ява на сегодня действительно подтянулась и на ней уже давно ничего не тормозит так чтобы резко в глаза боросалось. Слух о медленности явы обычно вызван тем, что о скорости явы судят по интерфейсу создаваемому с помощью довольно тормозного Swing-а.
Ява не имеет структул и обладает худшим оптимизатором. Но это не так критично как кажется.
VD>>Дык именно их минимизация и сделала дотнет таким шустрым. Если в код С++ встроить все те проврки что есть в дотнете, то он проиграет очень серьезно. Там целая куча оптимизаций делается. Те же проверки на выход за пределы массивов выносятся из циклов как инварианты. При таком контроле 10% проигрыша, то не поражение, а победа.
FR>Продолжаем рекламу
Это факт. Если бы я сам не дела тестов из которых отчетливо видно, что инварианты выносятся из цикла, я бы так не говорил. Реально на Шарпе спокойно можно писать код мало уступающий аналогичному С++-коду по скорости. Есть правда несколько мест, но они хорошо изучены и их можно успешно обходить.
FR>Ты преувеличиваешь сложности. Реально для модов не нужна особо навороченная модульность.
Я этим занимался лет 5 и уверяю тебя знаю о чем говорю.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, LSL, Вы писали:
LSL>У меня как раз порт. 50% Software rendering'а написана на ассемблере.
LSL>DD там есть и что-то ещё... DIB и SW. И всё это для инициализации, установки палитры... LSL>А графика выводится через собственные алгоритмы на ассемблере и си.
Дело конечно было давно, но вроде бы я не спал и помню, что как раз в порте они устранили весь асм в софтварьном рэндерере чтобы можно было скомпилировать код в менеджед. Об это чуть ли не в описании было написано.
. И получалось, что софтварьный рэндерер в порте работал значительно медленнее чем в оригинале. Разница была куда больше чем между менеджед и амнеменеджед версиями.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, LSL, Вы писали:
LSL>Здравствуйте, VladD2, Вы писали:
LSL>>>>Да, на плюсах. Вот тут как раз обёртка. Но не роль скриптового языка !
FR>>>
VD>>А что сешного? В общем-то по барабану полностью ли написан движок или есть качественная обертка. Ведь твоя задача писать прикладной код. И она успешно решается. Правда у оберток обычно производительность несколько хуже...
LSL>Да. Managed DirectX — DirectX API для .NET, тоже обёртка (довольно тонкая) над Native DirectX...
LSL>Интересно, что будет дальше, в Longhorn, в WGF. Осталось ждать бета-версию.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, LSL, Вы писали:
LSL>>Для этого SDK качать надо, да и не тесты это, просто примеры...
VD>А. Ну, их я запускал еще когда DX9 появился. И у меня тоже результаты были почти идентичные у менеджед и анменеджед примеров. Просто я их названия на память не помню.
VD>Я уж не знаю как у FR там огромная разница получилась.
Ну я так же могу не доверять вашим результатам
Но как уже писал LSL эти тесты мало что значат.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>просто ты не работал с интерпретаторами, я тоже так думал
VD>Работал и не мало. Потому и говорю.
не знаю мне чтобы научится нормально программровать хватило книги на русском, и нескольких статей, вообще язык простой и легкий.
FR>>Я имею в виду сам принцип, минимум встроенных средств, все остальное в библиотеках
VD>А где иначе? Другое дело, что библиотеки тоже разные бывают.
да полно у питона библиотек.
FR>>Ладно это все фигня, надо на реальных задачах смотреть.
VD>Ну, реальную игру я смотел. Правда у меня сейчас машина очень шустрая, но все же. Ощущения от игры прекрасное. Тормозов нет. Скролинг плавный. Зверющки бегают без запинки. Все в 3D. А вот рэйтивный Варкрафт на P4 3.0 тормозил.
Ладно как я посмотрю какую нибудь приличную игру на шарпе так и будем спорить(или не будем )
FR>>понимаешь когда что-то слишком усиленно рекламируют, это почти всегда значит FR>>что на самом деле все не так радужно как хотят показать.
VD>Рекламируют — это когда продать хотят. Я же тебе ничего продавать не хочу. Я просто выражаю свои ощущения. И делюсь тем что знаю.
Не всегда хотят продать, бывает и религиозная пропаганда
FR>>Я там по форумам немного лазил, писали что быстрее.
VD>Дык я тебе и говорю, что возможно. Но заслуги Шарпа и дотнета в этом нет. Уж в этом то я очень неплохо разбираюсь. VD>А вот что действительно быстрее, так это скорость разработки и отладки.
Это понятно что скорость компиляции больше, на том же дельфи на самом деле быстрее отлаживатся чем на плюсах, но это не увеличивает скорость разработки в разы, может процентов на 10, хотя конечно зависит от того как привык работать.
FR>>Да и насчет простоты написания объем-то исходников практически одинаков с плюсами
VD>Сравнивать нужно объем игры. Потом объем объему розть. Код шарпа читается намного олее просто и одназначно. А стало быть поддерживать и развать его проще. Ну, это точно так же как с Питоном. К тому же еще ненадо забывать о рефакторинге. Фишки вроде студии 2005 и РеШарпера очень сильно поднимают скорось разработки больших проекто.
Я говорю про объем портированного движка.
VD>>>А вот это уже выдумки.
FR>>Ну загрузи сам и проверь, у меня медленее.
VD>Грузил, проверял. Правда давно было дело. Но тут Re[14]: С++ и .NET
LSL привел свежую статистику.
FR>> Кроме того шарповые версии постоянно FR>>подтормаживают и всегда вешаются, но не буду сильно к бете придиратся.
VD>Вот как-то ни разу не видел. Какой из самплов у тебя тормозил?
я про демки из шарповского варианта ogre.
FR>>Насчет того что язык не в чем ни уступает очень спорно FR>>Питон выше уровнем чем C# и подерживает больше парадигм.
VD>Не думаю, что он сильно выше уровнем. Хотя судить не буду, все же я Питон совсем не знаю. Если ты продемонстриуешь эту высокоуровенвость, то буду очень признателен, а сам постараюсь сделать тоже самое на Шарпе, чтобы можно было сравнить.
# -*- coding: cp1251 -*-
import psyco, time
from math import sin
from math import cos
formula =r"-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234\
-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234\
-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234\
-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234\
-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234-(asd-qwe)*3*3*asd/(asd-sin(qwe)+5/asd)-123.234"
ParseCount = 10
CalcCount = 10000
#компилируем
t1 = time.clock()
for i in xrange(ParseCount):
f = eval(compile("lambda asd, qwe : " + formula, "<string>", "eval"))
psyco.bind(f)
t2 = time.clock()
print "Парсинг %d проходов. Выполнено за %f сек." % (ParseCount, t2 - t1)
#используем
def run():
t1 = time.clock()
for i in xrange(1, CalcCount + 1):
f(i, i)
t2 = time.clock()
print "Подсчет %d проходов. Выполнено за %f сек." % (CalcCount, t2 - t1)
psyco.bind(run)
run()
run()
>D:\Python23\pythonw -u "c1.py"
Парсинг 10 проходов. Выполнено за 0.045159 сек.
Подсчет 10000 проходов. Выполнено за 0.137674 сек.
Подсчет 10000 проходов. Выполнено за 0.140011 сек.
>Exit code: 0
При этом ни пришлось писать загрузчик, все и так реализуется.
Кстати у тебя там ошибка цикл начинается с нуля и выражение calc1.Calc(i, i); должно вылетать с исключением деление на ноль,(и скорость вычисления похоже не верна так как вылетало на первой строке но ты не ловил), так что мне пришлось цикл с единицы начать.
FR>>Проблема в другом, вот простой пример, java сейчас на таких тестах практически очень близка к плюсам, но в реальных приложениях почему то тормозит.
VD>Ну, оба утверждения спорны. VD>1. Ява все же отстает даже на таких тестах. VD>2. Ява на сегодня действительно подтянулась и на ней уже давно ничего не тормозит так чтобы резко в глаза боросалось. Слух о медленности явы обычно вызван тем, что о скорости явы судят по интерфейсу создаваемому с помощью довольно тормозного Swing-а.
VD>Ява не имеет структул и обладает худшим оптимизатором. Но это не так критично как кажется.
Ладно, но шарп приложения тоже подтормаживают как и ява.
VD>>>Дык именно их минимизация и сделала дотнет таким шустрым. Если в код С++ встроить все те проврки что есть в дотнете, то он проиграет очень серьезно. Там целая куча оптимизаций делается. Те же проверки на выход за пределы массивов выносятся из циклов как инварианты. При таком контроле 10% проигрыша, то не поражение, а победа.
FR>>Продолжаем рекламу
VD>Это факт. Если бы я сам не дела тестов из которых отчетливо видно, что инварианты выносятся из цикла, я бы так не говорил. Реально на Шарпе спокойно можно писать код мало уступающий аналогичному С++-коду по скорости. Есть правда несколько мест, но они хорошо изучены и их можно успешно обходить.
FR>>Ты преувеличиваешь сложности. Реально для модов не нужна особо навороченная модульность.
VD>Я этим занимался лет 5 и уверяю тебя знаю о чем говорю.
Здравствуйте, FR, Вы писали:
VD>>Дык, чудак ты человек. Я же тебе говорю, в дотнете компонентность практически беплатная! На Питоне может и не хуже, но явно намного "дорноже". Платить ты будешь скоростью. Для скрипта может это и прокатит. Но писать всь движок ты на нем пока что не сможешь. А стало быть всю компонентность прийдется реализовывать убогими средствами С++. А на Питоне ты будешь вынужден пользваться теми средствами, что реализовал на С++.
FR>Ты преувеличиваешь сложности. Реально для модов не нужна особо навороченная модульность.
+1
К тому же, никто не запрещает использовать для написания модов любой другой язык, не только C++. Есть же ведь PythonNET, PythonCOM, PyXPCOM etc.
VD>>Не думаю, что он сильно выше уровнем. Хотя судить не буду, все же я Питон совсем не знаю. Если ты продемонстриуешь эту высокоуровенвость, то буду очень признателен, а сам постараюсь сделать тоже самое на Шарпе, чтобы можно было сравнить.
FR>ну не знаю, мне проще наоборот, вот из твоей ссылки про калькулятор (http://gzip.rsdn.ru/forum/Message.aspx?mid=630887&only=1
Да я там сразу не заметил что есть исходники, вот резултаты:
C#
Парсинг 1 проходов. Выполненно за 0,34737208 сек.
Подсчет 10000 проходов. Выполненно за 0,01358078 сек.
Подсчет 10000 проходов. Выполненно за 0,01254629 сек.
Calc(1, 1) = -2464,68
Calc(-1, 333) = 7570,07303724222
...
питон
Парсинг 1 проходов. Выполнено за 0.003656 сек.
Подсчет 10000 проходов. Выполнено за 0.125949 сек.
Подсчет 10000 проходов. Выполнено за 0.124851 сек.
f(1, 1,) = -2464.68
f(-1, 333) = 7570.07303724
С++
calc1_parse
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
average all = 0.00902299
average middle = 0.00892317
calc2_parse
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
average all = 0.00898962
average middle = 0.0089554
calc3_parse
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
average all = 0.00908275
average middle = 0.00898477
calc1_calculate
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
average all = 0.281803
average middle = 0.274264
calc2_calculate
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
average all = 0.16609
average middle = 0.162688
calc3_calculate
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
average all = 0.177784
average middle = 0.174426
OK -2464.68
OK 7570.07
В общем питон парсит в 100 раз быстрее, но C# выполняет в 10 раз быстрее, а C++ отстает от обоих.
Здравствуйте, Sinclair, Вы писали:
S>Кстати да. С появлением современных технологий требование от новичка понимания отличий модели памяти compact от модели памяти small выглядит несколько нелепым. В этом смысле шарп — значительно более академичный язык. Ну и вообще дотнет как платформа. Там даже ассемблер можно читать, он не намного сложнее форта. Программисты на плюсах как правило восторгаются красивыми конструкциями (большая часть которых, кстати, появилась в языке относительно недавно), совершенно забывая о том ужасе, который можно увидеть, просто опустив глаза. Чудеса линковки и раздельной компиляции как раз относятся к тому мусору, который болтается у плюсов под ногами с самого рождения.
Никто и не спорит, что плюсам хорошо бы кровь сменить и органы пересадить. ИМХО пора забить на синкасическую совместимость с С, и провести радикальный рефакторинг.
Здравствуйте, Kluev, Вы писали: K>Никто и не спорит, что плюсам хорошо бы кровь сменить и органы пересадить. ИМХО пора забить на синкасическую совместимость с С, и провести радикальный рефакторинг.
Ну... провели. Получилась Java. Через восемь лет еще раз провели. Получился C#.
Видишь ли, из песни-то слова не выкинешь. Чтобы забыть о моделях памяти, надо избавиться от указателей. Чтобы забыть о хидерах, надо сделать полноценную компонентную модель. Как только мы это сделали, встает вопрос времени жизни.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
FR>>comp.lang.python VD>Это все на английском. Да и не море это. А на русском по дотнету форумов хватает, а по питону я даже и не видел.
Каких ещё кошерных форумов по дотнету можно почитать ?
Здравствуйте, VladD2, Вы писали:
VD>Дело конечно было давно, но вроде бы я не спал и помню, что как раз в порте они устранили весь асм в софтварьном рэндерере чтобы можно было скомпилировать код в менеджед. Об это чуть ли не в описании было написано.
VD>Я в свое время делал сравнение скорости родного Квака и портом http://gzip.rsdn.ru/Forum/Message.aspx?mid=325529&only=1
. И получалось, что софтварьный рэндерер в порте работал значительно медленнее чем в оригинале. Разница была куда больше чем между менеджед и амнеменеджед версиями.
Открываю солюшен, нахожу проект "ref_soft" — софтверный рендеринг.
В проекте 22 файла на С, 9 файлов на ассемблере и один на C++, плюс в сишных файлах много ассемблерных вставок.
У меня тот самый порт от Vertigo Software.
Здравствуйте, Dog, Вы писали:
FR>>>comp.lang.python VD>>Это все на английском. Да и не море это. А на русском по дотнету форумов хватает, а по питону я даже и не видел. Dog>Каких ещё кошерных форумов по дотнету можно почитать ?
У нас тут есть раздел ссылок там их хватает. Из самых извесных www.gotdotnet.ru .
... << RSDN@Home 1.1.4 beta 3 rev. 0>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Следующая версия эксплорера пришется в большей части с использованием дотнета. И будет огромный менеджед-апи для расширения функциональности эксплорера на дотнете.
Здравствуйте, maq, Вы писали:
VD>>Следующая версия эксплорера пришется в большей части с использованием дотнета. И будет огромный менеджед-апи для расширения функциональности эксплорера на дотнете.
maq>Откуда информация? И на чем она пишется? C++/CLI?
Гы. ИМХО, загонят эксплодер в гроб. Хотя вскрытие покажет.