Любопытная деталь. Представленные мною программы поиска простых чисел написаны на языках VB и C#, алгоритм одинаковый.Вот только почему-то программа на VB делает свое дело за 7 секунд, а программа на C# – за 22 секунды. 🙂 Может проверит кто, да предположения выскажет?
Интересненько, а зачем тебе в такой проге COM interop?
Тем более, что второй пример неверен [smile cool]
Мдяя… старая добрая тема НЕТ платформы. Даже название говорит за себя – НЕТ и точка! 🙂 . Эта тема для меня лично даво уже наболевшая. Вот не терплю я дот нет совершенно, потому как для моего рода задач она не просто не подходит… она несносна!!! Потому и приходится делать все на C++. Тем, кто его боится, скажу одно – сколько людей – столько и мнений. Так что не слушайте других, а попробуйте сами. Лично я не за нет технологию. Я не вижу просто как я смогу следить за всеми ресурсами приложения сам(это просто необходимо), как писать оптимизации под SSE, да и как черт возьми я могу посчитать там быстро кватернионы, если везде одни чертовы надстройки классовые!!!
ну а поиск простых чисел, можно и на спп сделать:#include
ну чем не прелесть)))
2 ArchiMageИ первый, и второй примеры моей программы поиска простых чисел верны абсолютно, ибо проверены – откомпилированы и протестированы. Где ошибка и в чем она заключается? [smile doubt]
2 ZeroMem
for(int j = 2; j < 8; j++)
А почему у вас проверка идет только до делителя 8? откуда вообще взялось это магическое число? Кстати, скопировал эту программу, создал приложение C++ .NET, вставил туда приведеный код – ругается…
Хм… Все-таки я нашел причину, почему программа на C# заканчивает свою работу аж за 22 секунды, в то время как программа на VB – за 7. После исправления недочета обе программы имеют одинаковую скорость (лишний раз подтверждая, что если уж пишешь на .NET, разницы в языках нет никакой).2 ZeroMemЕще раз просмотрев программу вашу, я убеждаюсь в ее [b]полной[/b] неработоспособности. Во-первых обменяли местами булевы значения – там где истина, оказалась ложь, и выводится число, которое простым не является. Это раз. Во-вторых, инициализация булевой переменной (присвоение ей начального значения) производится только один раз в начале программы, хотя делать это надо во внешнем цикле постоянно. И, наконец, никак не могу понять, откуда все-таки взято магическое число 8, почему делители проверяются только до числа 8?Народ, напишите кто-нибудь на классическом C++ программу поиска простых чисел нормально и откомпилируйте – сравним скорость работы классического C++ и коллег этого языка из .NET 😉
[quote name='Данилка']И первый, и второй примеры моей программы поиска простых чисел верны абсолютно, ибо проверены – откомпилированы и протестированы. Где ошибка и в чем она заключается? [smile doubt][/quote]Так ты расскажи, что за недочет был? Я надеюсь, это отсутствие оператора break в нужном месте?
2 Данилка. Так чтоб сравнивать надо брать идентичные программы, отличающиеся только синтаксисом. У тебя же они разные.
Попробовал накатать свой вариант и получилось вот так 🙂 (в pivot числа)
select * from pivot awhere i>3 and i<10000and not exists(select 1 from pivot b where b.i between 2 and sqrt(a.i) and a.i%b.i=0)
А твой вариант можно ускорить, если завести массив для простых чисел (сначала в нем только один элемент 2) по мере нахождения добавлять их в него. И делить именно на простые числа, а не на все подряд.
2 Данилка:А теперь убери команды работы с консолью и скажи нам время [smile doubt]
[quote]#include
void main(){
int max = 100000; int i,g,flag;
for (g=3;g<=max;g++) { flag=1; for(i=2;i<= sqrt(g);i++) if (g % i == 0) flag=0;
if (flag) printf(“Simple = %d\n”,g); }
exit(0);}[/quote]
Ну и чем тебе этот код на С не устраивает?
[quote]-rwxr-xr-x 1 brain users 3,1K 2006-03-22 10:29 simple[/quote]размер бинарника 3.1 К
[quote]brain@book:~/project/simple$ time simple ………real 0m5.300suser 0m2.812ssys 0m0.116s[/quote]5,3 сикунды
Если переправить в файл то 2 секунды.
PS:К стати достаточно странно мерится временем не приводя параметры железа 🙂 .book 1.6M Ram 256
[quote name='Brain'] К стати достаточно странно мерится временем не приводя параметры железа 🙂 .book 1.6M Ram 256 [/quote]Ты не совсем въехал 🙂 Он то мерил на одной и той же машине. И мерил c# и бейсик. Про с и с++ вообще разговора не было.
[quote name='Дикий Билл']Ты не совсем въехал 🙂 Он то мерил на одной и той же машине. И мерил c# и бейсик. Про с и с++ вообще разговора не было. [/quote]Я то вьехал. А ты упустил [smile :))] [quote name='Данилка'] Народ, напишите кто-нибудь на классическом C++ программу поиска простых чисел нормально и откомпилируйте – сравним скорость работы классического C++ и коллег этого языка из .NET 😉 [/quote]
Хотя я написал на С. А то что то неохото вводить классы и тп. для такой задачки [smile :)))].
Во подправил немного добавил break;теперь в косоль:
real 0m1.043suser 0m0.152ssys 0m0.012s
А в файлreal 0m0.253suser 0m0.160ssys 0m0.008s
как видем сама программа без вывода примено 0.155 с. (поле User)
Ну я запустил у себя Данилкин вариант бейсиковский – тоже меньше секунды пашет.
Вы что паритесь с этим быстродействием?Если среда позволяет быстро делать сложные проги и страдает быстродействием, на которое конечный пользователь не обратит внимание, тогда чего к нему цепляться?Речь идет об удобстве разработки вроде как…
Copyright ©