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

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

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #5
    Зашедший
    Регистрация
    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.

Ваши права

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