Какой язык быстрее?

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

Какой язык быстрее?

Сообщение geh » 20 янв 2014, 12:36

Сегодня я решил узнать, какой из трех языков
Visual Basic, Visual Fortran, C++ Builder быстрее считает.
Им была дана одна и та же программа (естественно написанная на родном языке)
ее вид для Си:
Double pi=0;
for(long i=2000000000, i>0, i--) pi=pi+4/(4.0*i-3)-4/(4.0*i-1);
cout << "pi="<< setprecision(17) << pi;и условно положив, что скорость Бейсика равна 100% получил следующее:Visual Basic = 100%C++ Builder = 182%Visual Fortran = 200%Результат несколько неожиданный: То, что Фортран считает в 2 раза быстрее Бейсика, я зналНо почему ему уступил Си??Может это частный случай?Может другие Си быстрее?Или скорость проверяется иначе?
Последний раз редактировалось geh 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
NT
Сообщений: 3384
Зарегистрирован: 25 янв 2010, 21:00

Какой язык быстрее?

Сообщение NT » 20 янв 2014, 13:08

А вы опубликуйте полностью код программы в С.
Посмотрим, что там наворочили.
Последний раз редактировалось NT 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

Какой язык быстрее?

Сообщение geh » 20 янв 2014, 13:41

Вот полный код:

Код: Выбрать все

#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#include <iomanip>

#pragma argsused
int main(int args, char* argv[])
{
   char s;
   Double pi=0;
   for(long i=2000000000, i>0, i--) pi=pi+4/(4.0*i-3)-4/(4.0*i-1);
   cout << "pi="<< setprecision(17) << pi;   cin>>s;
   return 0;
}
Последний раз редактировалось geh 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
NT
Сообщений: 3384
Зарегистрирован: 25 янв 2010, 21:00

Какой язык быстрее?

Сообщение NT » 20 янв 2014, 16:17

Ваш код снова у меня не компиловался.
Сделал вот так - проверьте как компиляция у вас проходит.

Код: Выбрать все

#include <stdio.h>
#include <iostream>
#include <iomanip>

using namespace std;
int main(int args, char* argv[])
{
    char s;
    double pi=0;
    for(long i=2000000000; i > 0; i--)
     pi +=4/(4.0*i-3)-4/(4.0*i-1);
    
    cout << "pi="<< setprecision(17) << pi;    cin>>s;
    return 0;
}

PS. Да еще надо посмотреть как у вас сборка идёт.
Может есть что лишнее?
Ага еще оптимизация кода включена?
Но как это проверить на Borland C++ Builder, я не знаю.
Надо читать ((

PPS. Аха ответ такой :
pi=3.1415926533397931
Точность вышла только до 9 знака после запятой.
Последний раз редактировалось NT 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

Какой язык быстрее?

Сообщение geh » 20 янв 2014, 17:44

Я проверил. Ваш код у меня тоже работает.
Но время выполнения программы в 1,5 раза больше.
То есть у меня мой код быстрее. Ничего более сказать не могу.
За три дня много не выучишь.
Спасибо вам.
Последний раз редактировалось geh 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
NT
Сообщений: 3384
Зарегистрирован: 25 янв 2010, 21:00

Какой язык быстрее?

Сообщение NT » 20 янв 2014, 21:31

Оставил в коде самое нужное.
Eсли после выполнения программы пауза не нужна ,
то 2 линейки отмеченные как del - тоже можно выбросить:

Код: Выбрать все

#include <stdio.h>
#include <stdlib.h> //  del
#define COUNT 2000000000

int main()
{
    double pi=0;
    for(long i=COUNT; i > 0; i--)
        pi +=4/(4.0*i-3)-4/(4.0*i-1);
    
    printf( "Pi=%.16f \n", pi);
    system( "pause" ); //  del
    return 0;
}
Последний раз редактировалось NT 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
kiv
Сообщений: 1012
Зарегистрирован: 02 дек 2011, 21:00

Какой язык быстрее?

Сообщение kiv » 20 янв 2014, 21:33

geh писал(а):Source of the post
Я проверил. Ваш код у меня тоже работает.
Но время выполнения программы в 1,5 раза больше.
То есть у меня мой код быстрее. Ничего более сказать не могу.


Ну, поскольку ваш код ничем не отличается от второго, то замедление необъяснимо

У вас точно в фоне Windows ничего не делает? Например, при одном запуске просто простаивает, при другом - вы в Интернет лезете...

Точно вы сразу реагируете, когда выведен результат?

Кстати, добавьте после << pi еще << endl, иначе рискуете вывода не дождаться: при буферизованном выводе могут быть самые разные фокусы...Для сравнения - прилагаю скомпилированные VC++ и OW эту же программу.[img]/modules/file/icons/application-octet-stream.png[/img] test.rar
Последний раз редактировалось kiv 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
NT
Сообщений: 3384
Зарегистрирован: 25 янв 2010, 21:00

Какой язык быстрее?

Сообщение NT » 20 янв 2014, 21:53

2 Kiv

1. test_ow - самый быстрый
2. test_vc - на 0.04 сек слабее

Всё-таки многое зависит от компилятора!
Для сравнения мой (Dev-C++) проиграл целых 4 сек.
Последний раз редактировалось NT 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
zykov
Сообщений: 1777
Зарегистрирован: 02 ноя 2009, 21:00

Какой язык быстрее?

Сообщение zykov » 20 янв 2014, 23:00

Формулировка "Какой язык быстрее?" вообще бессмысленна.
Если имеется ввиду производительность сгенерированного кода, то оно бедет зависить не от языка, а от колмпилятора. При этом результат зависит от того, какую задачу компилируют. Т.е. ответ будет зависить от самой задачи (например в какой класс она попадает).
Последний раз редактировалось zykov 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

Какой язык быстрее?

Сообщение geh » 21 янв 2014, 06:19

После внесенных изменений, время работы вашей программы стало равняться времени работы моей
программы. Замена числа 2000000000 на COUNT на скорости программы никак не сказывается.
Я очень вам благодарен за ваше активное участие в этой теме, благодаря чему мои знания и опыт
быстро растут.

Формулировка "Какой язык быстрее?" вообще бессмысленна.
- ??? - я так не считаю. Логика? Например Бейсик обладает большим сервисом (удобством программирования)
Но за все надо платить, на это тратится процессорное время! И никакой компилятор не сделает Бейсик
быстрее Си!!

Я еще раз все проверил. Все верно!
Когда я выбираю в меню консольную программу,
то часть кода задается самой программой.
Выходит, что этот код можно убрать и хуже не будет!!
Ничего не могу понять! Но одно я понял - мне до вас далеко!!
Последний раз редактировалось geh 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 8 гостей