Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.56/27: Рейтинг темы: голосов - 27, средняя оценка - 4.56
xADMIRALx
67 / 61 / 5
Регистрация: 09.06.2012
Сообщений: 291
1

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

25.07.2012, 07:23. Просмотров 4926. Ответов 30
Метки нет (Все метки)

И так здравствуйте,хотелось бы узнать почему в данном случае(то есть использование 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 сек.

если не в том разделе создал перенесите пожалуйста в нужный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 07:23
Ответы с готовыми решениями:

Разница в скорости выполнения, итераторы
Википедия for (ContainerType::iterator it = C.begin(),end = C.end(); it !=...

В случае ошибки не прервать выполнение программы, а перейти к другой процедуре или к другому месту той же процедуры
Прошу помочь: в случае ошибки не прервать выполнение программы, а перейти к...

Увеличение скорости работы программы
Всем привет ребят. Пишу программу для разложения числа(на определенные...

Измерение скорости работы блока программы
Как можно протестировать на скорость работы отдельный блок программы? Пример:...

Как сгенерировать 100 чисел, разница чисел должна быть или -1 или +1
Как сгенерировать 100 чисел, разница чисел должна быть или -1 или +1 (например:...

30
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
25.07.2012, 08:07 2
А ничего, что на c++ ты ещё деление выполняешь N раз? Это сложная операция ведь. Хотя, конечно, в c# должно присутствовать такое же деление, просто оно вызывается само при обращении к .Second, но, возможно, оно каким-то способом оптимизировано?
А вообще, я всегда считал, что C# гораздо быстрее C++
0
defer
558 / 238 / 16
Регистрация: 29.11.2010
Сообщений: 800
25.07.2012, 09:11 3
Цитата Сообщение от nexen Посмотреть сообщение
А ничего, что на c++ ты ещё деление выполняешь N раз
деление выполняется 1 раз

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

Добавлено через 50 секунд
а в чем смысл, тут же просто текст в консоль выводится?
0
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
25.07.2012, 15:08 4
Ну я бы не включал операции вывода в консоль в счет.
Да и время говорят не показать ( такты считать надо ). Да и оптимизацию как то надо отключать наверное.
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.07.2012, 15:18 5
Цитата Сообщение от xADMIRALx Посмотреть сообщение
узнать почему в данном случае(то есть использование stl) c++ медленнее
а где тут(в 1-м посту) STL ?
1
Kastaneda
Jesus loves me
Эксперт С++
4938 / 3014 / 346
Регистрация: 12.12.2009
Сообщений: 7,610
Записей в блоге: 2
Завершенные тесты: 1
25.07.2012, 19:04 6
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от nexen Посмотреть сообщение
А вообще, я всегда считал, что C# гораздо быстрее C++
Бред... полный...
Не может код, выполняемый в виртуальной машине, выполнятся быстрее кода, выполняемом непосредственно в процессоре.
Это тоже самое, что утверждать, что твое письмо быстрее дойдет до адресата почтой России, чем через mail.ru
5
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
25.07.2012, 19:37 7
Kastaneda, друг-программист всегда так твердил, вот я и поверил ;<

Не по теме:

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

0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
25.07.2012, 20:13 8
nexen,

Не по теме:

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

0
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
25.07.2012, 20:18 9
У меня почему ,то "управляемый" ассоциировалось со сборщиком мусора.
0
nexen
25.07.2012, 20:28
  #10

Не по теме:

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

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

0
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
25.07.2012, 20:33 11
Откуда в С++ сборщик мусора? Ну конечно можно реализовать самому например как в книге Шилда.
1
xADMIRALx
67 / 61 / 5
Регистрация: 09.06.2012
Сообщений: 291
25.07.2012, 21:43  [ТС] 12
Сори за такую тупую тему,погугли вник и попросил Юпитера удалить,но он не удалил
0
Jupiter
25.07.2012, 22:00
  #13

Не по теме:

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

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

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

p.s И да, автор, раз вник, то расскажи и нам ; (
0
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
26.07.2012, 08:21 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

Для меня лично непонятно в чем заключается обмен информацией между программой и исполняющей средой и для чего это надо?
0
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
26.07.2012, 12:31 19
Avazart, собственно, как я уже говорил ранее, я читал вики и всё равно я.. глуп ; (
0
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
26.07.2012, 12:42 20
Ну так я к чему и привел- что непонятен сам механизм.
0
26.07.2012, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 12:42

Сравнение скорости, условие или операция
Подскажите, что быстрее сравнить 2 переменные if(x != y){ x = y + 1; } ...

Выполнение программы
Привет, я только начал изучать C++. По книге &quot;Язык программирования С&quot;...

Visual C++ или C++ Builder в чем разница?
Учу С++ for 21 days. Ну вопрос такой есть несколько версии С++. Например Visual...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru