Форум программистов, компьютерный форум CyberForum.ru

Разница в скорости выполнение программы C++ или C# - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
25.07.2012, 07:23     Разница в скорости выполнение программы C++ или C# #1
И так здравствуйте,хотелось бы узнать почему в данном случае(то есть использование stl) c++ медленнее c# ,запускаю из релиза

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale>
 
 
int main()
{
    setlocale(LC_ALL,".1251");
    time_t f = clock();
    for (int i = 0; i < 100000;i++)
        printf("%d\n",i);
 
    printf("Программа выполнялась : %d sek\n",(clock() - f) / CLOCKS_PER_SEC);
 
 
 
 
    system("PAUSE");
    return 0;
 
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace test_in_cshape
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime start = DateTime.Now;
           
            for (int i = 0; i < 100000; i++)
            {
                Console.WriteLine("{0}",i);
            }
            DateTime finish = DateTime.Now;
            Console.WriteLine("Программа выполнялась : {0}", finish.Second - start.Second);
            Console.ReadLine();
 
        }
    }
}
Запускаю одновременно 2 программы c# показывает 10 сек,с++ 14 сек.

если не в том разделе создал перенесите пожалуйста в нужный
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 07:23     Разница в скорости выполнение программы C++ или C#
Посмотрите здесь:

Visual C++ или C++ Builder в чем разница? C++
Выполнение программы C++
измерение скорости работы блока программы C++
Прерывается выполнение программы C++
C++ разница в скорости выполнения, итератры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
25.07.2012, 08:07     Разница в скорости выполнение программы C++ или C# #2
А ничего, что на c++ ты ещё деление выполняешь N раз? Это сложная операция ведь. Хотя, конечно, в c# должно присутствовать такое же деление, просто оно вызывается само при обращении к .Second, но, возможно, оно каким-то способом оптимизировано?
А вообще, я всегда считал, что C# гораздо быстрее C++
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
25.07.2012, 09:11     Разница в скорости выполнение программы C++ или C# #3
Цитата Сообщение от nexen Посмотреть сообщение
А ничего, что на c++ ты ещё деление выполняешь N раз
деление выполняется 1 раз

Цитата Сообщение от xADMIRALx Посмотреть сообщение
И так здравствуйте,хотелось бы узнать почему в данном случае(то есть использование stl) c++ медленнее c# ,запускаю из релиза
вообще-то у вас код на с

Добавлено через 50 секунд
а в чем смысл, тут же просто текст в консоль выводится?
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
25.07.2012, 15:08     Разница в скорости выполнение программы C++ или C# #4
Ну я бы не включал операции вывода в консоль в счет.
Да и время говорят не показать ( такты считать надо ). Да и оптимизацию как то надо отключать наверное.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.07.2012, 15:18     Разница в скорости выполнение программы C++ или C# #5
Цитата Сообщение от xADMIRALx Посмотреть сообщение
узнать почему в данном случае(то есть использование stl) c++ медленнее
а где тут(в 1-м посту) STL ?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
25.07.2012, 19:04     Разница в скорости выполнение программы C++ или C# #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от nexen Посмотреть сообщение
А вообще, я всегда считал, что C# гораздо быстрее C++
Бред... полный...
Не может код, выполняемый в виртуальной машине, выполнятся быстрее кода, выполняемом непосредственно в процессоре.
Это тоже самое, что утверждать, что твое письмо быстрее дойдет до адресата почтой России, чем через mail.ru
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
25.07.2012, 19:37     Разница в скорости выполнение программы C++ или C# #7
Kastaneda, друг-программист всегда так твердил, вот я и поверил ;<

Не по теме:

Кстати, вопрос не по теме, но я ну никак не могу понять, что же из себя представляет управляемый код? И чем он отличается от неуправляемого? Само собой википедию я читал, да и гуглом пользовался, но, видимо, мой скудный интеллект не позволяет этого понять ; ( Можете попробовать объяснить по-простому? (для людей, с IQ ниже 60)
То, что я понял (хотя, наверное, это не так) : управляемый код имеет место в среде, использующей виртуальную машину (c#, java и т.д), а неуправляемый код, соответственно, без ВМ (c++, turbo pascal (пример на 5 баллов :>) и т.д)

Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
25.07.2012, 20:13     Разница в скорости выполнение программы C++ или C# #8
nexen,

Не по теме:

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

Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
25.07.2012, 20:18     Разница в скорости выполнение программы C++ или C# #9
У меня почему ,то "управляемый" ассоциировалось со сборщиком мусора.
nexen
25.07.2012, 20:28
  #10

Не по теме:

Avazart, но если это так, то он и в c++ есть, а значит код там управляемый? Но ведь это не так, насколько мне известно. Хотя и сборщик мусора тут работает ровно так же, как программист на складе >_<"

Toshkarik, да, я об этом читал и тоже сразу подумал про отладку, но, как я уже говорил, читал, что c++ - неуправляемый, а потому я и вовсе сбился с толку ; (

Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
25.07.2012, 20:33     Разница в скорости выполнение программы C++ или C# #11
Откуда в С++ сборщик мусора? Ну конечно можно реализовать самому например как в книге Шилда.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
25.07.2012, 21:43  [ТС]     Разница в скорости выполнение программы C++ или C# #12
Сори за такую тупую тему,погугли вник и попросил Юпитера удалить,но он не удалил
Jupiter
25.07.2012, 22:00
  #13

Не по теме:

Цитата Сообщение от xADMIRALx Посмотреть сообщение
Сори за такую тупую тему,погугли вник
погуглил, вник, расскажи всем, а тему оставим в назидание!

diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.07.2012, 22:41     Разница в скорости выполнение программы C++ или C# #14
Цитата Сообщение от Kastaneda Посмотреть сообщение
Бред... полный...
Не может код, выполняемый в виртуальной машине, выполнятся быстрее кода, выполняемом непосредственно в процессоре.
На самом деле может за счет JIT.
с++ обычно компилируется в бинарный код, при этом компилятор не знает, на какой машине будет исполнятся программа, и вынужден генерировать общий код. А вот С# компилируется в промежуточное представление, и на момент выполнения точно знает, где он выполняется, и за счет этого может использовать платформо-зависимые оптимизации.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.07.2012, 22:50     Разница в скорости выполнение программы C++ или C# #15
Цитата Сообщение от diagon Посмотреть сообщение
А вот С# компилируется в промежуточное представление, и на момент выполнения точно знает, где он выполняется, и за счет этого может использовать платформо-зависимые оптимизации.
Цитата Сообщение от diagon Посмотреть сообщение
На самом деле может за счет JIT.
и чё? эти микрооптимизации никому не нужны, что-то я не припомню кардинальных изменений со времен SSE, MMX, etc
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.07.2012, 23:05     Разница в скорости выполнение программы C++ или C# #16
Цитата Сообщение от Jupiter Посмотреть сообщение
и чё? эти микрооптимизации никому не нужны, что-то я не припомню кардинальных изменений со времен SSE, MMX, etc
Однако они могут компенсировать тот факт, что с++ исполняется напрямую процессором, а C# виртуальной машиной.

Другое дело, что С++ как язык очень сильно оптимизирован(move semantics, шаблоны, etc), и в более серьезных приложениях шарпу за ним не угнаться.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
26.07.2012, 07:27     Разница в скорости выполнение программы C++ или C# #17
Спасибо, это интересно ; )
Но я так и не понял, что же такое "управляемый код" ;<

p.s И да, автор, раз вник, то расскажи и нам ; (
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
26.07.2012, 08:21     Разница в скорости выполнение программы C++ или C# #18
Управля́емый код (англ. managed code) — термин, введённый Microsoft для обозначения кода программы, исполняемой под «управлением» виртуальной машины .NET[1][2] — Common Language Runtime. При этом обычный машинный код называется неуправля́емым кодом (англ. unmanaged code).

Слово управляемый здесь относится к методу обмена информацией между программой и исполняющей средой. Оно означает, что в любой точке исполнения управляющая среда может приостановить исполнение и получить информацию, специфичную для текущего состояния. Необходимая для этого информация представлена в управляемом коде на языке Intermediate Language и в связанных с этим кодом метаданных.

С формальной точки зрения управляемым кодом является любой программный код, исполняемый в среде отладчика.
http://ru.wikipedia.org/wiki/%D0%A3%...BA%D0%BE%D0%B4

Для меня лично непонятно в чем заключается обмен информацией между программой и исполняющей средой и для чего это надо?
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
26.07.2012, 12:31     Разница в скорости выполнение программы C++ или C# #19
Avazart, собственно, как я уже говорил ранее, я читал вики и всё равно я.. глуп ; (
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 12:42     Разница в скорости выполнение программы C++ или C#
Еще ссылки по теме:

Как сгенерировать 100 чисел, разница чисел должна быть или -1 или +1 C++
Сравнение скорости, условие или операция C++
Некорректное выполнение программы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
26.07.2012, 12:42     Разница в скорости выполнение программы C++ или C# #20
Ну так я к чему и привел- что непонятен сам механизм.
Yandex
Объявления
26.07.2012, 12:42     Разница в скорости выполнение программы C++ или C#
Ответ Создать тему
Опции темы

Текущее время: 20:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru