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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
#1

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

25.07.2012, 07:23. Просмотров 4394. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разница в скорости выполнение программы C++ или C# (C++):

Разница в скорости выполнения, итераторы - C++
Википедия for (ContainerType::iterator it = C.begin(),end = C.end(); it != end; ++it) { std::cout &lt;&lt; *it &lt;&lt; std::endl; } ...

Измерение скорости работы блока программы - C++
Как можно протестировать на скорость работы отдельный блок программы? Пример: замер скорости class_one.function1(). int main() {...

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

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

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

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

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

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

Добавлено через 50 секунд
а в чем смысл, тут же просто текст в консоль выводится?
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,796
Записей в блоге: 17
25.07.2012, 15:08 #4
Ну я бы не включал операции вывода в консоль в счет.
Да и время говорят не показать ( такты считать надо ). Да и оптимизацию как то надо отключать наверное.
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.07.2012, 15:18 #5
Цитата Сообщение от xADMIRALx Посмотреть сообщение
узнать почему в данном случае(то есть использование stl) c++ медленнее
а где тут(в 1-м посту) STL ?
1
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,274
Записей в блоге: 2
Завершенные тесты: 1
25.07.2012, 19:04 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от nexen Посмотреть сообщение
А вообще, я всегда считал, что C# гораздо быстрее C++
Бред... полный...
Не может код, выполняемый в виртуальной машине, выполнятся быстрее кода, выполняемом непосредственно в процессоре.
Это тоже самое, что утверждать, что твое письмо быстрее дойдет до адресата почтой России, чем через mail.ru
5
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
25.07.2012, 19:37 #7
Kastaneda, друг-программист всегда так твердил, вот я и поверил ;<

Не по теме:

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

0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
25.07.2012, 20:13 #8
nexen,

Не по теме:

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

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

Не по теме:

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

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

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

Не по теме:

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

1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.07.2012, 22:41 #14
Цитата Сообщение от Kastaneda Посмотреть сообщение
Бред... полный...
Не может код, выполняемый в виртуальной машине, выполнятся быстрее кода, выполняемом непосредственно в процессоре.
На самом деле может за счет JIT.
с++ обычно компилируется в бинарный код, при этом компилятор не знает, на какой машине будет исполнятся программа, и вынужден генерировать общий код. А вот С# компилируется в промежуточное представление, и на момент выполнения точно знает, где он выполняется, и за счет этого может использовать платформо-зависимые оптимизации.
1
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.07.2012, 22:50 #15
Цитата Сообщение от diagon Посмотреть сообщение
А вот С# компилируется в промежуточное представление, и на момент выполнения точно знает, где он выполняется, и за счет этого может использовать платформо-зависимые оптимизации.
Цитата Сообщение от diagon Посмотреть сообщение
На самом деле может за счет JIT.
и чё? эти микрооптимизации никому не нужны, что-то я не припомню кардинальных изменений со времен SSE, MMX, etc
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2012, 22:50
Привет! Вот еще темы с ответами:

Выполнение программы в облаке - C++
Доброго времени суток. Возник вопрос- могу ли я, обычный пользователь ПК, отправить свою программу (exe-файл) куда-то в облако для...

Зациклить выполнение программы - C++
Помогите,как сделать чтобы при завершении программы, при нажатии определенной кнопки она начинала работать снова. Т.е. чтобы не...

Неправильное выполнение программы - C++
Задание: В одномерном массиве, состоящем из n вещественных элементов, вычислить: • номер минимального элемента массива; • сумму...

Некорректное выполнение программы - C++
Суть проблемы: при выполнении программы выдаются корявые значения (-1.INF). Понимаю, что в программе где-то допущена ошибка, но сам уже...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
25.07.2012, 22:50
Ответ Создать тему
Опции темы

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