???
Математика на уровне МГУ

Показано с 1 по 25 из 162

Тема: Про вычислительную технику

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пилот Аватар для Дм. Журко
    Регистрация
    20.12.2007
    Адрес
    Калининград (Кёнигсберг)
    Возраст
    59
    Сообщений
    772

    Re: Про вычислительную технику

    Цитата Сообщение от Yurec Посмотреть сообщение
    Ладно, раз молчите, прокомментирую то что есть.
    Раз я «молчу». Ага.

    Мощность удваивается, а C# тормозит в 4 раза больше плюсов. Значит, через 4 года при сравнимом быстродействии будет такая же функциональность, как у программы 4х летней давности. Либо ставить еще более мощное железо. Для истребителя это - дополнительный объем и вес.
    Откуда взяли разы? Испытывали? Пытаетесь спорить с тем, кто испытывал? Скорость C# иногда выше кодогенератора Visual C++ и никогда не бывала хуже в разы. Байткод меньше. Подозреваю, что и после кодогенерации, если она зачем-то нужна. Особенно быстра плавающая точка, так как, видимо, сопроцессор -- стековое устройство. Впрочем, если волнуют крохи, почитайте исследования. Я испытал, у меня обратные выводы -- C++ не выигрывает и в быстродействии.

    Никто такого не предлагает.
    Вы предлагаете. C++ безнадёжно устарел, новый код на нём писать -- ошибка управления проектом. Прежний код можно осторожно использовать, до тех пор, пока не заменят и его.

    Умно - выбрать максимально эффективный инструмент. Докажите, что C# более эффективен для БРЭО - я умолкну. Вы доказывать не хотите, и упорно игнорируете все мои вопросы.
    Могу показать, доказать никто никому ничего не сможет, это вера Ваша. Я легко C# сменю на лучший, если появится что-то. Не раз ведь менял.

    Напишите на C# следующие проекты:
    1) Конкурентоспособную СУБД;
    2) Высокопроизводительный онлайн-сервис
    3) Современный, технологичный 3D - движок.
    То есть Вы это всё написали? Уважаю. И сколько лет, по-вашему, C#?

    Как напишете, приходите и рассказывайте что C# серебряная пуля и рулез неимоверный.
    Сами идите и найдите свои «4 раза». Найдёте -- приведите, и можете продолжить писать глупости.

    8
    Цитата Сообщение от Verof Посмотреть сообщение
    Как вы думаете почему игры пишут на С++, а не на С#?
    Мне вопрос? У них и спросите. Впрочем, пишут и на C#, распространённые 3D engine из него доступны.

    Сам использовал для графики (крывых, шкал, схем) _только_ Direct3D, так красивее, а не потому что нужна была трёхмерность, подвижность и освещение.

    Использовать довольно просто, но C++ описан лучше, конечно. Однако C++ знаю, заимствовать из примеров и описаний для него довольно просто.
    Крайний раз редактировалось Дм. Журко; 03.05.2008 в 20:07. Причина: Добавлено сообщение

  2. #2
    Зашедший
    Регистрация
    12.07.2004
    Адрес
    Харьков
    Возраст
    45
    Сообщений
    140

    Re: Про вычислительную технику

    Цитата Сообщение от Дм. Журко Посмотреть сообщение
    Откуда взяли разы? Испытывали?
    Да, испытывал. И не только я - ссылку приводил выше. Сомневаетесь в результатах? Опровергните.

    Пытаетесь спорить с тем, кто испытывал? Скорость C# иногда выше кодогенератора Visual C++ и никогда не бывала хуже в разы.
    Приведите код, посмотрим. Я привел ссылку, там код и числа. Вы не привели ничего.
    Впрочем, если рассматривать "сфероконя в вакууме" - голый цикл с суммированием чисел - производительность дествительно сравнимая, у C# чуть-чуть выше, это я тоже проверял. Только как обычно бывает, в реальном приложении картина совсем другая. Чуть ниже тестовый код и результаты.

    Вы предлагаете.
    Я предлагаю писать на том, что более эффективно.

    C++ безнадёжно устарел, новый код на нём писать -- ошибка управления проектом.
    Дмитрий, а Вы сами-то хоть одним проектом управляли, сложнее драйвера для портов?

    То есть Вы это всё написали?
    Не все, только номер 2 - движок для онлайн-казино, в составе команды из 3х человек. Название компании-заказчика привести не могу, по вполне понятной причине.
    Писали на C++, поскольку заказчик предъявил определенные требования к производительности. На C# выполнить эти требования было бы невозможно.
    И мне пофиг, сколько лет C# - если бы задачу можно было выполнить на нем, я бы так и сделал. Но это не всегда возможно.

    Сами идите и найдите свои «4 раза». Найдёте -- приведите
    Уже нашел. Облегчу Вам задачу и приведу ссылку еще раз: http://www.kbcafe.com/articles/CSharp.Performance.pdf
    Впрочем, там не везде в 4 раза, целочисленные вычисления - только в 2.
    Приведу еще и свой тест:
    Код:
    //////////////////////////////////////////////
    // C++
    //////////////////////////////////////////////
    
    class Storage
    {
    public:
    	Storage( void ): _val(0) {}
    	Storage( const double val ): _val(val) {}
    
    	double get_val( void ) const
    	{
    		return _val;
    	}
    	void set_val( const double val )
    	{
    		_val = val;
    	}
    private:
    	double _val;
    };
    
    class Calculator
    {
    public:
    	Calculator( void ) {}
    
    	void calc( Storage & s, const Storage &a, const Storage &b )
    	{
    		s.set_val( a.get_val() + b.get_val() );
    	}
    };
    
    class Runner
    {
    public:
    	Runner( void ) {}
    
    	Storage run( Storage &a, Storage &b )
    	{
    		unsigned int i;
    		Calculator calc;
    
    		for (i = 0; i < 1000000000; i++)
    		{
    			calc.calc(a, a, b);
    		}
    		return a;
    	}
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Runner r;
    	Storage a(0.1);
    	Storage b(0.2);
    
    	unsigned int ticks = GetTickCount();
    	printf("C++ test...\n");
    	a = r.run(a, b);
    	ticks = GetTickCount() - ticks;
    	printf("%lf, %d\n", a.get_val(), ticks);
    
    	return 0;
    }
    
    
    //////////////////////////////////////////////
    // C#
    //////////////////////////////////////////////
    
    namespace csharp_test
    {
        class Storage
        {
            private double _val;
    
            public Storage() 
            {
                _val = 0;
            }
            public Storage(double val)
            {
                set_val(val);
            }
            public void set_val(double val)
            {
                _val = val;
            }
            public double get_val()
            {
                return _val;
            }
        }
    
        class Calculator
        {
            public Calculator() {}
    
            public void calc(Storage s, Storage a, Storage b)
            {
                s.set_val(a.get_val() + b.get_val());
            }
        }
    
        class Runner
        {
            public Runner() {}
    
            public Storage Run(Storage a, Storage b) 
            {
                Calculator calc = new Calculator();
    
                for (int i = 0; i < 1000000000; i++)
                {
                    calc.calc(a, a, b);
                }
                return a;
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Storage a = new Storage(0.1);
                Storage b = new Storage(0.2);
                Runner r = new Runner();
    
                long  ticks = DateTime.Now.Ticks;
                Console.WriteLine("C# test...\n");
                a = r.Run(a, b);
                ticks = ( DateTime.Now.Ticks - ticks ) / 10000;
                Console.WriteLine("{0}, {1}", a.get_val(), ticks);
            }
        }
    }
    И результат:
    C++ - 2781 тиков
    C# - 11906 тиков
    Более чем в 4 раза.
    Скрин с результатом на всякий случай приаттачил.
    Хотя я не спец по шарпу, возможно что-то упустил.

    Да, и небольшое замечание по поводу кода. Можно было бы обойтись структурами (для Storage например), но поскольку мы обсуждаем большие и сложные программы, нас интересует работа с классами в первую очередь.

    и можете продолжить писать глупости.
    Хамство Вам не к лицу.

    Мне вопрос? У них и спросите. Впрочем, пишут и на C#, распространённые 3D engine из него доступны.
    Найдите хоть один _технологичный_ и _производительный_ 3D движок _полностью_ на C#. Сравнимый с другими хорошими движками, такими как Unreal Engine или движок Crysis.

    Сам использовал для графики (крывых, шкал, схем) _только_ Direct3D, так красивее, а не потому что нужна была трёхмерность, подвижность и освещение.
    При чем тут шкалы и схемы? Вас про игры спрашивают, причем про _современные_ _технологичные_ игры.

    P.S. вот еще ссылки:
    http://www.rsdn.ru/forum/message/543729.flat.aspx
    http://www.garret.ru/~knizhnik/dybas...tml#comparison
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	test.JPG 
Просмотров:	121 
Размер:	110.2 Кб 
ID:	85161  
    Крайний раз редактировалось Yurec; 04.05.2008 в 00:35.

  3. #3
    Пилот Аватар для Дм. Журко
    Регистрация
    20.12.2007
    Адрес
    Калининград (Кёнигсберг)
    Возраст
    59
    Сообщений
    772

    Re: Про вычислительную технику

    Цитата Сообщение от Yurec Посмотреть сообщение
    Да, испытывал. И не только я - ссылку приводил выше. Сомневаетесь в результатах? Опровергните.
    Чего их опровергать? Ну обнаружили, что три параметра в примере передаются вчетверо медленнее, и что? Так, по-вашему, замеряют быстродействие? Да, C++ неплохо передаёт небольшое число параметров в функцию, может даже в регистры пару засунуть, проверок не делает. И что?

    Приведите код, посмотрим. Я привел ссылку, там код и числа. Вы не привели ничего.
    Наплевать мне на ссылки, как Вы не можете с одного раза-то понять? Для меня важнее, что мой коллега перевёл свой довольно большой проект с Delphi на C# и получил очевидный даже на глаз выигрыш скорости перерисовок, хотя не скорость его занимала. Главное, что перенос дался легко и выявил ряд недоразумений.

    Впрочем, если рассматривать "сфероконя в вакууме" - голый цикл с суммированием чисел - производительность дествительно сравнимая, у C# чуть-чуть выше, это я тоже проверял. Только как обычно бывает, в реальном приложении картина совсем другая. Чуть ниже тестовый код и результаты.
    C# обгоняет C++ на сложных вещественных вычислениях. Замерять сложение? А зачем? Обгоняет и при работе с кучей.

    Я предлагаю писать на том, что более эффективно.
    Именно, что более эффективно для производительности программирования. Заодно, кстати, это даст время и средства на доводку производительности алгоритмов.

    Дмитрий, а Вы сами-то хоть одним проектом управляли, сложнее драйвера для портов?
    Да управлял. Причём на C++.

    Не все, только номер 2 - движок для онлайн-казино, в составе команды из 3х человек. Название компании-заказчика привести не могу, по вполне понятной причине.
    Писали на C++, поскольку заказчик предъявил определенные требования к производительности. На C# выполнить эти требования было бы невозможно.
    И мне пофиг, сколько лет C# - если бы задачу можно было выполнить на нем, я бы так и сделал. Но это не всегда возможно.
    То есть, не испытали C#. А методология сравнения Ваша хромает на все ноги.

    Уже нашел. Облегчу Вам задачу и приведу ссылку еще раз: http://www.kbcafe.com/articles/CSharp.Performance.pdf
    Впрочем, там не везде в 4 раза, целочисленные вычисления - только в 2.
    Приведу еще и свой тест:
    И результат:
    C++ - 2781 тиков
    C# - 11906 тиков
    Более чем в 4 раза.
    Скрин с результатом на всякий случай приаттачил.
    Хотя я не спец по шарпу, возможно что-то упустил.
    Код этот можно сократить раз в 10, если не 100. Но это не программа, а невесть что. Наверняка для C++ использовали оптимизации, а на C# и не думали (что правильно, это последнее дело). Возьмите примеры из Visual Studio на C++ и C# и сравните производительность, я сравнивал.

    Да, и небольшое замечание по поводу кода. Можно было бы обойтись структурами (для Storage например), но поскольку мы обсуждаем большие и сложные программы, нас интересует работа с классами в первую очередь.
    Нет тут классов, есть какие-то ошмётки. Настоящие объекты намного больше, а значит и регистровая оптимизация не очевидно полезна. Собственно, это одна из методологических посылок приведшая к абстрактному стековому байткоду -- широкое использование сложных объектов приводит к тому, что регистровая оптимизация не необходима. На RISC-процессорах, кстати, сверхоперативный стек чаще всего есть, но не на x86, там только сопроцессор имеет новую архитектуру.

    Хамство Вам не к лицу.
    Хорошо, что Вы это понимаете. Вот и перестаньте хамить.

    Найдите хоть один _технологичный_ и _производительный_ 3D движок _полностью_ на C#. Сравнимый с другими хорошими движками, такими как Unreal Engine или движок Crysis.
    Не знаю таких. Мне это было надо? Пользовался Direct 3D 9 и не беспокоился, я трёхмерные стрелялки, к счастью, не пишу.

    При чем тут шкалы и схемы? Вас про игры спрашивают, причем про _современные_ _технологичные_ игры.
    Притом, что я их использую, это мой опыт.

    Наберите в google «Производительность C#» и наслаждайтесь, если вопрос волнует. Только у Вас, замечу, вопросов нет, остальные приходят к сложным выводам. Сразитесь там на форумах с «идиотами», которые своё время оценивают выше компьютерного.

  4. #4
    Зашедший
    Регистрация
    12.07.2004
    Адрес
    Харьков
    Возраст
    45
    Сообщений
    140

    Re: Про вычислительную технику

    Цитата Сообщение от Дм. Журко Посмотреть сообщение
    Чего их опровергать? Ну обнаружили, что три параметра в примере передаются вчетверо медленнее, и что?
    То, что в реальной программе таких функций с такими параметрами будет очень много.

    Так, по-вашему, замеряют быстродействие?
    Замеряют по-разному. Замеры различных алгоритмов, начиная от работы со строками и заканчивая обработкой XML и выборкой из баз данных, можно найти в гугле, ссылки я привел. Почти все замеры показывают худшую производительность, от 2х до 4х раз. А замеров передачи параметров я не видел, поэтому написал свой тест.

    Да, C++ неплохо передаёт небольшое число параметров в функцию, может даже в регистры пару засунуть, проверок не делает. И что?
    То, что программы на C# работают медленнее. Сколько раз повторить, что Вам дошло?

    Наплевать мне на ссылки, как Вы не можете с одного раза-то понять?
    Хорошо, тогда я Вам без ссылок скажу: программа на C# будет работать в среднем в 2-4 раза медленнее программы на C++. Спасибо, свободны.

    Для меня важнее, что мой коллега перевёл свой довольно большой проект с Delphi на C# и получил очевидный даже на глаз выигрыш скорости перерисовок, хотя не скорость его занимала. Главное, что перенос дался легко и выявил ряд недоразумений.
    И по этому единичному случаю Вы судите о быстродействии языка? Смешно. Тем более Дельфи - далеко не эталон, ага.

    C# обгоняет C++ на сложных вещественных вычислениях.
    Это не имеет никакого значения, поскольку в общем скорость упадет в 2-4 раза. Я Вам про сфероконя уже раза 4 писал, Вы так и не поняли.

    Именно, что более эффективно для производительности программирования. Заодно, кстати, это даст время и средства на доводку производительности алгоритмов.
    Вы русский язык понимаете? Если стоят определенные требования по быстродействию, никакая производительность программирования Вам не поможет, проект будет провален.

    То есть, не испытали C#.
    С чего Вы это взяли? Испытали, разумеется. Решение о выборе языка принимали не от фонаря.

    Код этот можно сократить раз в 10, если не 100.
    Вы что, правда не понимаете зачем там именно такой код? Поясняю на пальцах: в реальной программе нужна инкапсуляция процесса выполнения, процесса вычислений и данных.

    Но это не программа, а невесть что.
    Нет. Невесть что - это то что Вы здесь пишете.

    Наверняка для C++ использовали оптимизации, а на C# и не думали
    Оптимизацию использовал и в C#. Не надо меня обвинять в подтасовках. Неужели получше аргументов не нашлось?

    Возьмите примеры из Visual Studio на C++ и C# и сравните производительность, я сравнивал.
    Какие именно примеры брали?

    Не знаю таких. Мне это было надо? Пользовался Direct 3D 9 и не беспокоился, я трёхмерные стрелялки, к счастью, не пишу.
    Не пишете, но заявляете, что на C# можно написать. Так вот, я Вам говорю - нельзя, тормозить будет неимоверно. На этот раз без ссылок, раз на ссылки Вам плевать.

    Притом, что я их использую, это мой опыт.
    Но вопрос Вам задали не про это.

    Наберите в google «Производительность C#» и наслаждайтесь, если вопрос волнует.
    А Вы думаете, откуда я взял вышеприведенные ссылки? Именно из гугла, именно по таком запросу, только на английском языке.

    =============

    EDIT: после прочтения вот этого все вопросы отпали. В игнор.
    Крайний раз редактировалось Yurec; 04.05.2008 в 20:22.

  5. #5
    Пилот Аватар для Дм. Журко
    Регистрация
    20.12.2007
    Адрес
    Калининград (Кёнигсберг)
    Возраст
    59
    Сообщений
    772

    Re: Про вычислительную технику

    Цитата Сообщение от Yurec Посмотреть сообщение
    То, что в реальной программе таких функций с такими параметрами будет очень много.
    Что по-вашему «много»?

    Замеряют по-разному. Замеры различных алгоритмов, начиная от работы со строками и заканчивая обработкой XML и выборкой из баз данных, можно найти в гугле, ссылки я привел. Почти все замеры показывают худшую производительность, от 2х до 4х раз. А замеров передачи параметров я не видел, поэтому написал свой тест.
    Нет там ни 4, ни 2, если речь вести о последней паре лет. Причём часто дело именно в том, что методологию сравнения приблизили к делу.

    То, что программы на C# работают медленнее. Сколько раз повторить, что Вам дошло?
    Не медленнее на деле, опыт имею.

    Хорошо, тогда я Вам без ссылок скажу: программа на C# будет работать в среднем в 2-4 раза медленнее программы на C++. Спасибо, свободны.
    Не «будет работать», а работает давно, и не медленнее, по крайней мере.

    И по этому единичному случаю Вы судите о быстродействии языка? Смешно.
    Есть доводы серьёзнее? И что Вы там раньше о сборке мусора спрашивали? Она-то причём?

    Тем более Дельфи - далеко не эталон, ага.
    Некоторое время обгонял VC. Потом и MS тоже использовали кодогенератор Intel. Разница на уровне дополнительных квалификаторов. Кстати, вызов процедуры Delphi, вроде, до сих пор быстрее.

    Это не имеет никакого значения, поскольку в общем скорость упадет в 2-4 раза. Я Вам про сфероконя уже раза 4 писал, Вы так и не поняли.
    Не упадёт.

    Вы русский язык понимаете?
    Хорошо понимаю, не беспокойтесь.

    Если стоят определенные требования по быстродействию, никакая производительность программирования Вам не поможет, проект будет провален.
    Есть опыт провалов? Знаю цену скорости кодогенерации -- она ни разу не была важной. Хотя все сравнивают, все беспокоятся. Я, как видите, тоже сравнивал когда-то, тоже переживал и ассемблерные генерации правил. Прошло.

    С чего Вы это взяли? Испытали, разумеется. Решение о выборе языка принимали не от фонаря.
    А получилось именно так.

    Вы что, правда не понимаете зачем там именно такой код? Поясняю на пальцах: в реальной программе нужна инкапсуляция процесса выполнения, процесса вычислений и данных.
    Пояснил уже. Напрмер, в C#, даже unmanned, есть проверки времени исполнения, которых нет в C++, значит, если Вы будете испытывать пример, в котором проверки будут обрабатываться основную часть времени, Вы получите произвольно большое соотношение «тиков». Вот только к производительности это не имеет прямого отношения.

    Лучшие профессионалы отрасли исследовали относительную цену проверок и выигрыша производительности.

    Нет. Невесть что - это то что Вы здесь пишете.
    Нет -- Вы.

    Оптимизацию использовал и в C#. Не надо меня обвинять в подтасовках. Неужели получше аргументов не нашлось?
    Какую? Сейчас не так много средств оптимизации C#. Замечу, что C# вполне можно просто компилировать, как C++, без байткода. Семантика вполне это позволяет, она много проще C++. У Вас просто нет таких средств. Что не значит, что при окончательной сборке ответственного проекта нельзя их использовать.

    Какие именно примеры брали?
    Из Direct 3D SDK.

    Не пишете, но заявляете, что на C# можно написать. Так вот, я Вам говорю - нельзя, тормозить будет неимоверно. На этот раз без ссылок, раз на ссылки Вам плевать.
    Не тормозит, это я Вам не ссылку, а опыт сообщаю.

    Но вопрос Вам задали не про это.
    А ответил я про это, умному достаточно.

    А Вы думаете, откуда я взял вышеприведенные ссылки? Именно из гугла, именно по таком запросу, только на английском языке.
    И читали ссылки-то? Или ограничились парой статей 1997 и 2002-2003 годов?

    EDIT: после прочтения вот этого все вопросы отпали. В игнор.
    Как я без Ваших ценных замечаний буду?

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •