Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 19
1

Правда что С быстрее чем С++?

11.02.2010, 21:21. Показов 4753. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется в виду на исполнении, а не на момент компиляции...
Наверняка такая тема уже была, но я не нашёл, если дадите ссылку также буду презнателен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2010, 21:21
Ответы с готовыми решениями:

Что может быть быстрее, чем math sqrt?
Передо мной стоит задача: Мне необходимо максимально быстро найти количество целых квадратных...

Быстрее чем цикл
Доброго времени уток дорогие форумчане. Интересует вот какая штуковина, допусти есть программа...

C# работает быстрее чем С++
имеется файл типа 6 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4...

C программа компилируется быстрее чем C++
Почему программа на C компилируется быстрее чем на С++?

26
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.02.2010, 21:26 2
Нет, неправда.
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.02.2010, 21:27 3
ассемблер ещё быстрее
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.02.2010, 21:29 4
zim22, тоже неверно.
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
11.02.2010, 21:30 5
Ну если рассматривать C++ как усовершенствованный C, то потери логичны там где внедрены новые возможности. В ООП например. Однако потери не особо значимые. В общем я думаю это не столь важно на чем писать на C или C++ если заботишься о скорости.
0
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 19
11.02.2010, 21:35  [ТС] 6
Ну а если на с++ не использовать ООП а просто писать такойже код как на С где-то могут возникнуть задержки в работе?
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
11.02.2010, 21:45 7
в виду на исполнении:
Если алгоритм медленный и корявый, всё отстойное.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.02.2010, 21:46 8
Цитата Сообщение от Chernomor Посмотреть сообщение
Ну а если на с++ не использовать ООП а просто писать такойже код как на С где-то могут возникнуть задержки в работе?
Какая разница с ООП или без. ООП в бинаре нет. На этот вопрос вообще не может быть ответа да или нет. Потому что где-то С будет быстре, где-то С++, где-то руки кривые у программиста, где-то ОС, где-то опции компилятора.
0
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 19
11.02.2010, 21:49  [ТС] 9
А если нет разницы по скорости работы то почему некоторые продолжают писать на С а не на С++. Я так понимаю у него есть какие-то приимушества. Если есть то какие?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.02.2010, 21:53 10
Chernomor, потому разные люди любят разные языки. С и С++ - разные языки. Если мне в программе будет удобнее использовать ООП, я буду юзать С++. А если я почитаю, что удобнее обойтись без них, то я лучше напишу на С. Хотя никто мне не мешает написать на С++. Дело вкуса, среды, и библиотек. Если мне придется писать в какой-нибудь VC++ диалоговое окошко, то я заюзаю MFC и никуда от С++ не денусь. на чем хочешь, на том и пиши.
Цитата Сообщение от Chernomor Посмотреть сообщение
Я так понимаю у него есть какие-то приимушества. Если есть то какие?
Любое преимущество одного языка перед другим - субъективно.
2
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 19
11.02.2010, 21:53  [ТС] 11
Цитата Сообщение от Vourhey Посмотреть сообщение
что где-то С будет быстре, где-то С++, где-то руки кривые у программиста, где-то ОС, где-то опции компилятора.
А где С будет рациональнее использовать?
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.02.2010, 21:58 12
Цитата Сообщение от Vourhey Посмотреть сообщение
zim22, тоже неверно.
к сожалению моих знания ассемблера недостаточно для спора, но тема уже подымалась.
в некоторых случаях асм код быстрей.
http://stackoverflow.com/quest... ter-than-c
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.02.2010, 22:07 13
Цитата Сообщение от Chernomor Посмотреть сообщение
А где С будет рациональнее использовать?
Писать какую-нибудь системную утилиту мне приятнее на С. Хотя, приходилось иметь дело с С++ кодом на низком уровне. Если писать графическое что-нибудь под винду, то, скорее всего, на С++/MFC. Под линукс на С/GTK. Сложно найти место, где было бы однозначно выгодней использовать C. Но, в принципе, если хорошо понимать, что именно собираешься писать, то можно сделать вполне логичный выбор. На С++ сейчас пишут и драйвера и все, что угодно.

Добавлено через 2 минуты
Цитата Сообщение от zim22 Посмотреть сообщение
в некоторых случаях асм код быстрей.
А если в некоторых случаях, то не надо говорить, что он быстрей, чем С или С++. Так эти "некоторые случаи", которых много, ставят под сомнение твое смелое заявление, что ассемблер быстрее.

Добавлено через 3 минуты
zim22, самая просатя причина в том, что в компилятор заложена немалая логика по оптимизации кода (компиляторы не дураки пишут, а люди с опытом) и ты должен быть очень хорошим программистом на ассемблере, чтобы написать код лучше компилятора. Вторая причина в том, что в программе есть очень много узких мест, про которые тебе нужно знать: сеть, диск и т д. А третью причину я оставлю на потом, если найдешь что-нибудь против первых двух.
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.02.2010, 22:15 14
Цитата Сообщение от Vourhey Посмотреть сообщение
ты должен быть очень хорошим программистом на ассемблере, чтобы написать код лучше компилятора.
Цитата Сообщение от Vourhey Посмотреть сообщение
в программе есть очень много узких мест, про которые тебе нужно знать: сеть, диск и т д
ну и с чего ты взял, что не существует людей, обладающими этими качествами?
если же такие люди есть - они напишут код, который будет быстрее, сгенерированного С компилятором
следовательно ты был неправ, когда опроверг моё заявление, что ассемблер быстрее С
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.02.2010, 22:27 15
Цитата Сообщение от zim22 Посмотреть сообщение
ну и с чего ты взял, что не существует людей, обладающими этими качествами?
А с чего ты взял, что их нет? Я такого не говорил. Они есть. Мы говорим о языках. А его используют люди. И большинство не сможет этого сделать. А раз уже есть те, кто не сможет, твое заявление о языке - ложь. Просто ты любишь все возводить в абсолют. Взял и обобщил все и выдал неправильное заявление. В правильных руках бывает ассемблер быстрее С, в другой ситуации С будет быстрее, чем ассемблер. Здесь нельзя дать однозначный ответ, как сделал ты. Это раз.
Код, сгенерированный компилятором, в большинстве своем, будет по быстродействию такой же, как написанный программистом на асме, а не медленнее. Это два.
Правило номер два выставит обе программы снова вровень. Это три.
Четыре. может, проверим? Увидим, кто круче, мой компилятор или ты с ассемблером.
А пять, это то, что работая, например, с программой ICQ написанной на С и на написанной на асме ты разницы и не заметишь никакой

Добавлено через 5 минут
Цитата Сообщение от zim22 Посмотреть сообщение
сгенерированного С компилятором
А ты что, можешь знать, как сгенериурет код любой компилятор с любыми опциями? Ну тогда ты либо гений, который все знает, либо глупец не посчитай за оскорбление. Я вот, например, за все компиляторы говорить не могу, так как меньше половины всех существующих юзал...
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.02.2010, 22:28 16
Цитата Сообщение от Vourhey Посмотреть сообщение
Мы говорим о языках. А его используют люди. И большинство не сможет этого сделать. А раз уже есть те, кто не сможет, твое заявление о языке - ложь.
перечитывай свою цитату много раз. до тех пор, пока ты не поймёшь, где ошибка в твоей логической цепочке рассуждений.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.02.2010, 22:33 17
Ошибки нет. Языки без людей не существуют. А раз есть люди нарушающие твое заявление о языке, твое заявление - ложь. Все логично.

Добавлено через 4 минуты
zim22, хорошо, фигле спорить. Привожу пример. Самый простой в одну строчку.
C
1
a =b;
А теперь объясни мне, почему этот код будет работать медленнее, чем
Assembler
1
movl (%ebp), %eax
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.02.2010, 22:36 18
Vourhey, ок. приведу аналогию, если так не понимаешь.
что быстрей? автомобиль, развивающий скорость 300 км/час(ассемблер) или черепаха (Си)?
ответ: всё зависит от водителя автомобиля. если за рулём будет блондинка, которая не сможет им управлять - черепаха будет передвигаться быстрее.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.02.2010, 22:38 19
zim22, аналогия ужасна. С чего ты взял, что С черепаха? Ты еще этого не доказал. Выше простейший пример кода. Вот и докажи, что С черепаха. Вперед.
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.02.2010, 22:47 20
асм код быстрее? вопрос исчерпан.
код взят из ссылки, что я приводил выше.
http://stackoverflow.com/quest... ter-than-c

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "stdafx.h"
#include <windows.h>
#include <iostream>
 
using namespace std;
 
float KahanSum
(
  const float *data,
  int n
)
{
   float
     sum = 0.0f,
     C = 0.0f,
     Y,
     T;
 
   for (int i = 0 ; i < n ; ++i)
   {
      Y = *data++ - C;
      T = sum + Y;
      C = T - sum - Y;
      sum = T;
   }
 
   return sum;
}
 
float AsmSum
(
  const float *data,
  int n
)
{
  float
    result = 0.0f;
 
  _asm
  {
    mov esi,data
    mov ecx,n
    fldz
    fldz
l1:
    fsubr [esi]
    add esi,4
    fld st(0)
    fadd st(0),st(2)
    fld st(0)
    fsub st(0),st(3)
    fsub st(0),st(2)
    fstp st(2)
    fstp st(2)
    loop l1
    fstp result
    fstp result
  }
 
  return result;
}
 
int main (int, char **)
{
  int
    count = 1000000;
 
  float
    *source = new float [count];
 
  for (int i = 0 ; i < count ; ++i)
  {
    source [i] = static_cast <float> (rand ()) / static_cast <float> (RAND_MAX);
  }
 
  LARGE_INTEGER
    start,
    mid,
    end;
 
  float
    sum1 = 0.0f,
    sum2 = 0.0f;
 
  QueryPerformanceCounter (&start);
 
  sum1 = KahanSum (source, count);
 
  QueryPerformanceCounter (&mid);
 
  sum2 = AsmSum (source, count);
 
  QueryPerformanceCounter (&end);
 
  cout << "  C code: " << sum1 << " in " << (mid.QuadPart - start.QuadPart) << endl;
  cout << "asm code: " << sum2 << " in " << (end.QuadPart - mid.QuadPart) << endl;
 
  return 0;
}
C code: 500137 in 242311
asm code: 500137 in 117188
0
11.02.2010, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2010, 22:47
Помогаю со студенческими работами здесь

Sin быстрее чем из math.h
ребят, вообщем мне задали написать программу которая считала синус быстрее чем из math.h ) скорость...

Правда что new очень медленная?
Вобщем читал статейки в интернете про операцию new, утечки памяти и функци, которые возвращают...

Правда ли, что все цифры равны
Вот такая задача. найти сколько цифр в данном числе равны А. Правда ли, что все цифры в числе...

Почему код, написанный на С++, в разы быстрее работает с большим объемом памяти, чем с маленьким?
Привет! Понадобилось мне сравнить скорость работы идентичных алгоритмов на Fortran и C++. Алгоритм...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru