сравнение с# и с++
#include <math.h>
void main()
{
long chislo,i,j,sqr;
cout<<"input chislo"<<endl;
cin>>chislo;
for(i=3;i<chislo;i+=2)
{
sqr=sqrt(i);
for(j=3;j<=sqr;j+=2)
{
if(i%j==0)
break;
}
if(j>sqr)
cout<<i<<" ";
}
}
Доброго всем времечка. Вот хотел сравнить скорость шарпа и сиси+ ,как однажды сказала моя преподша, написал програмку для нажодения всех простых чисел до введенного числа на плюсах хотел сравнить с шарпом а понял что в консоли у шарпа не разу не работал((( а сравнивать приложение для виндовс и консоль как то не этичным посчитал. вот прошу помощи переписать код под консоль шарпа.
если кому не лень можете и потестить на скорость. только результаты сообщите пожалуйсто.
Вобще предлогаю в этой теме вылаживать коды и результаты сравнения их выполнения на двух языках. Я лично очень надеюсь что шарп победит))) для меня это жизненая необходимость просто)))
З.Ы. .NET будет медленнее раза в 2-3.
А зря.
Шарп не заточен на производительность. Он-же на базе фреймворка работает, код, прежде чем превратиться в машинный, проходит ([SIZE="1"][COLOR="SlateGray"]все круги ада[/COLOR][/SIZE]) много этапов, о какой производительности может идти речь :D
Кстати, интересная подпись у вас ))
Дело не в количестве этапов компиляции, их всего два по большому счету. Дело не в самой качественной оптимизации JIT-компилятором.
Прост в освоении, производительность труда программиста выше.
а кто тебе сказал, что шарп лучше? :mad:
плюсы шарпа это удобство и простата разработки, скорость разработки, а так же обширная, удобная и очень функциональная библиотека классов. в остальном кресты лучше или ни чем не уступают шарпу. :p
а вообще тема превращается в холивар, пора закрывать! :D
У меня на решете Эратосфена сешарп выиграл (52 сек: 55 сек :D).
using System.Collections.Generic;
namespace CSharp
{
class Program
{
static void Main()
{
const int maximum = 80000;
ICollection<int> primes = new LinkedList<int>();
for (var number = 2; number < maximum; number++)
{
if (IsPrime(number, primes))
{
primes.Add(number);
Console.WriteLine(number);
}
}
}
static bool IsPrime(int number, IEnumerable<int> primes)
{
foreach (var prime in primes)
{
if (number / prime < prime)
return true;
if (number % prime == 0)
return false;
}
return true;
}
}
}
#include <list>
using namespace std;
typedef list<int> PrimesCollection;
bool IsPrime(int number, const PrimesCollection & primes)
{
for (PrimesCollection::const_iterator i = primes.begin(); i != primes.end(); i++)
{
const int prime = *i;
if (number / prime < prime)
return true;
if (number % prime == 0)
return false;
}
return true;
}
void main()
{
const int maximum = 80000;
PrimesCollection primes;
for (int number = 2; number < maximum; number++)
{
if (IsPrime(number, primes))
{
primes.push_back(number);
cout << number << endl;
}
}
}
Вау. :) А теперь убери ICollection<int> и поставь LinkedList<int>. Должно стать еще быстрее.
Хотя тут ускорение из-за шустрого выделения памяти в .NET.
Не, не стало :(
А почему, кста, должно? Ладно со значащими типами: упаковка и всё такое...
А почему, кста, должно? Ладно со значащими типами: упаковка и всё такое...
Считается что вызов через интерфейс медленнее чем виртуальный вызов, но похоже это те еще спички.
мне этого никто не говорил, но сказать это мне надо преподше своей. потому что я перешел на шарп когда все плюсы учат.
ни чего подобного, не обижайте плюсы! уберите вывод на экран и скомпильте. профайлеры показали скорость на моем железе(intel core i7 950 3.1Ghz) для крестов около ~250ms и для шарпа ~800ms. данные по 20 измерениям. и это как бэ не предел, тут дело еще тормозят эстээлевские итераторы, да и ваш код оптимизировать можно.
вывод: в небольшой дискредитации с++ виноват вывод, а вовсе не сверх быстрое выделение памяти в c#. (сорри за тавтологию) :D
ЗЫ: скомпилино было под 32 бита, а вот если под 64? %)
[QUOTE=cpentyc]мне этого никто не говорил, но сказать это мне надо преподше своей. потому что я перешел на шарп когда все плюсы учат.[/QUOTE]
ага, скажи, пусть тетенька похихикает над тобой. :D
а вообще зря ты на шарп перешел, бо он проще в разы, работы с памятью нет, да и вообще... твои однокурсники пишущие на с++ освоят гораздо больше чем ты, вникнут в механизмы распределения памяти, и т.п., а ты будешь знать только дот нет, а все что за ним как темный лес. а когда будешь проходить курс операционных систем, так вообще за голову схватишься.
ЗЫ: да и вообще с++ и c# сравнивать все равно, что теплое с мягким.
ЗЫЗЫ: походу сейчас начнутся священные войны, так что пора закрывать тему, пока кровь не полилась рекой! ]=D
а вообще зря ты на шарп перешел, бо он проще в разы, работы с памятью нет, да и вообще...
от мфц у меня уже крыша едет.
не смеши мою клавиатуру)))))))))
вникнут в механизмы распределения памяти, и т.п.
ой щас умру)))))) :D ты мою группу не видел.
ЗЫ: да и вообще с++ и c# сравнивать все равно, что теплое с мягким.
ЗЫЗЫ: походу сейчас начнутся священные войны, так что пора закрывать тему, пока кровь не полилась рекой! :D
что ты все тему хочешь закрыть. пусть люди выскажуться. и вобще я предлогал сравнивать алгоритмы на скорость тут
не смеши мою клавиатуру)))))))))
...
ой щас умру)))))) :D ты мою группу не видел.
на самом деле Artem_3A дело говорит, а то что никто не хочет учиться - это вопрос другой..
что ты все тему хочешь закрыть. пусть люди выскажуться. и вобще я предлогал сравнивать алгоритмы на скорость тут
а люди уже высказали мысль.
p.s. а на скорость алгоритмы сравнивают не здесь, а за средой разработки;) тем более что большинство алгоритмов давно уже оценено на производительность, и твой тест будет как минимум просто частным случаем =)
Это грозит большими потерями. В вопросах выбора языка мы непримиримы :)
[/OFFTOP]
А вообще (теоретически) с- плюс си шарпа в простоте, плюс C++ - в большей ... ну типа связи непосредственно с аппаратным обеспечение и ос (без прослоек), а значит в скорости.
Но всё зависит от конкретного компилятора.
а что вам мешает продолжить это дело самообучением? :)
вы судите об их "шарюсти" по тому, что они "прошарюли" что с++ дальше изучаться не будет, или по тому, что они изучив полностью с++, сделали вывод что надо переходить на c#?
upd: хм, а кто вам кстати сказал, что вы изучение с# не закончите на рассмотрении консольного приложения, считающего сумму двух целых чисел? :)
мне препод превила отвращение к этому языку.ничего с собой поделать не могу
вы судите об их "шарюсти" по тому, что они "прошарюли" что с++ дальше изучаться не будет, или по тому, что они изучив полностью с++, сделали вывод что надо переходить на c#?
нет на плечах этих людей группа 29 человек выгребла прошлый семестр. я сам 12 семестровых написал за 2 месяца.
upd: хм, а кто вам кстати сказал, что вы изучение с# не закончите на рассмотрении консольного приложения, считающего сумму двух целых чисел? :)
я на нем семестровую уже пишу:)
простите, но соболезную.
я на нем семестровую уже пишу:)
ввиду вашей нелюбви к с++, оставлю no comments :)
если она "привила отвращение к этому языку", значит она сама его не любит, значит доказать что "с# лучше" вам будет более чем легко...разве не так? :)
Пример
- база данных с небольшимчислом записей. Т.к. критична скорость написания, а скорость работы при малом числе записей сильно отличаться не будет - C# подходит (не лучше)
- игра (3d, спецэффекты и прочее) - (особенно стратегия с большим числом боевых единиц) - как на бедных неписях в пользу эффектов не экономь, но при их достаточном числе мы вызовем внепланоывый тормоз). Пусть даже это будет 0.5-секундное торможение один раз за всю игру - неприятно. А если на каждом шагу такое? Значит C++ (при той же оптимизированности мы выиграем за счёт работы без помощи виртуальной машины)
Тов автор, вашу клавиатуру тут никто вроде смешить и не собирался. Смысл изучать язык с готовым фреймворком и мульоном библиотек и функций на все случаи жизни?
А изучение техник работы с памятью - это неотъемлемая часть программы, любого уважающего себя ВУЗа. Так что если до сих пор не изучали - то будете. И уж поверьте, не имея понятия что такое указатели, выделение и утечка памяти, и многое другое - рано или поздно у вас будут трудности. И выруливать из них, вам будет куда сложнее чем вашим одногруппникам (тем кто будет учиться)
- игра (3d, спецэффекты и прочее) - (особенно стратегия с большим числом боевых единиц) - как на бедных неписях в пользу эффектов не экономь, но при их достаточном числе мы вызовем внепланоывый тормоз).....
Все несколько иначе. На Цпп написаны многие игровые платформы, в их ядре упор на математику дан, только поэтому используется C++. Вся же логика игр работает на встраиваемых скриптовых языках - Python, Lua. Но не все игры - хардкорные кризисы и фаркраи :) Есть и казуальные, вот их можно и на дотнете ваять. Яркий пример - Eufloria.
А за что его любить? :rolleyes:
(на правах троллинга)
Работа с памятью - это скорее рутина, которая отнимает рабочее время. Если задача программиста отличается от написания менеджера памяти, то это совершенно непродуктивный и малополезный труд, решение ненужных логических задач. Изучение работы менеджера памяти нужно, и квалифицированный программист просто обязан иметь представление о его устройстве, а также об устройстве и принципах работы сборщика мусора в системах с автоматическим управлением памятью, но это, напоминаю, не является самоцелью программирования вычислительной техники.
(на правах троллинга)
хотя бы за такую замечательную конструкцию :)
a+a+++a+++a+a++;
a+a+++a+++a+a++;
В C# это тоже возможно. Другое дело, что в C# не будет неопределенного поведения и результат будет однозначным.
ТС. толкните преподавателю речь о том что C# новый, песпективный, востребованный, хорошо зарекомендовавший себя язык(если в ответ на это она вам грустно улыбнётся - значит препод своё дело знает)
Зы/ на лекиях нам читают Word и Excel а на лабах спрашивают что делает <conio.h> :D
...
в C# не будет неопределенного поведения и результат будет однозначным.
мы будем любить с++ за неоднозначность и неповторимость :D
ну мы лабы еще на ,мною любимом бэйсике делаем.А забыл сказать мы до сих пор работаем в шестой студии.а после занакомства с 8 студией у проподши была кислая мина.Видите ли ей не понравилось что там мноко подсказок вылазиет.
можно попробовать.у меня игра лабиринт.обезательное требование база данных, сохранение отчета в ворде,заставка и хэлпик.
(Си(который к стати не проходили :D), C#(ну не нравиться он мне),VB(отвратная вещь))
а что же тогда вам нравится?
Почему автору нравиться C#?
мне бэйсие нравится. просто при виде плюсов у меня начинается нервный тик.
Возможно просто от того что программирование - это не его, те он не рассматривает это как нечто увлекательное :), лично мне кажется что любой Программист должен знать систему снизу доверху.
программировать то мне нравится. меня.а ваш странный вывод пусть остается на вашей совести.оставим его без коментариев
ТС. толкните преподавателю речь о том что C# новый, песпективный, востребованный, хорошо зарекомендовавший себя язык(если в ответ на это она вам грустно улыбнётся - значит препод своё дело знает)
ее любимый возглас. ой как красиво!!!!(ну если конечно красиво) ей лабы на флэше сдавать надо.
int a=1;
a+a+++a+++a+a++;
:D :D :D у меня 4 выводит)))) а у кого что?
подозреваю, варианты такие - C(его не проходили, но это не говорит ничегго о авторе), C++, Delphi-подобные языки, или скриптовые - Python, Haskell и т.д.
З.Ы. А что преподша подсказок слишком много видит - никто не запретилл блокнот.
З.Ы. А что преподша подсказок слишком много видит - никто не запретилл блокнот.
так ей и скажу))))))
у меня точно также. просто в дрожь бросает. мне по душе шарп и фасм =) конечно плюсы вещь хорошая, но меня просто убивает структура его проекта, а также линкер и объектные файлы (кстати поэтому масм тоже терпеть не могу) ну и еще синтаксис в некоторых местах
а чо тема до сих пор не в общалке?
У меня кармы не хватает :D
SylverLight перспективнее :)