2 ArchiMage
Вообще-то, нет. Мы не можем судить о среде разработке только на основании удобства разработки. Согласись, параметр быстродействия далеко не на последнем месте. И это большой вопрос, обратит юзер на скорость внимание или нет. Согласен, если какая-то операция вместо положенных 0.002 секунды выполняется за 1 сек, то можно на эту мелочь внимания не обращать – если такая операция вызывается один раз в час. А если ситуация прямо противоположная? Если операция вызывается десятки раз в секунду? Тогда ты тут будешь бороться за каждую миллисекунду.По части программ. Да, мой недочет в программе на C# был именно с отсутствующим break… по этому 22 секунды вместо 7 сек. Если убрать вывод на консоль, то заканчивает работу программа через секунду.Машина Celeron 2933 Mhz, 1024 Mb RAM DDR-400 (PC-3200).Но вообще-то я хотел обменяться программами, что бы каждый мог запустить и проверить. Я хочу открыть сайт “Обмен” на Народе и выложить в общий доступ пароли на FTP к нему – что бы все могли на него заливать файлы…
[quote name='Данилка']Если операция вызывается десятки раз в секунду? Тогда ты тут будешь бороться за каждую миллисекунду.[/quote]Тогда давай будем обращать внимание на программы, используемые в реальном мире, а не академические примеры, меряющие производительность языка в попугаях.[quote name='Данилка']Я хочу открыть сайт “Обмен” на Народе и выложить в общий доступ пароли на FTP к нему – что бы все могли на него заливать файлы… [/quote]Давай, только народ тебе этого не простит – не любят они файловые сайты
К сожилению винда не как не умет запусекать ELF файлы 🙂 . Хотя minGW должен прокатить (ну не ставить же студио для такой вещи). А может на ASM забабахать? сделать досовский com на байт 20-100 [smile :))]. Будем мерится у кого пиписка круче 🙂
А файлы можно выкладывать и на http://www.webfile.ru/ и т.п сайтах
Хех… 2Данилка: тебе нужны простые числа же… ну вот… и кстати, не до 8 идет там проверка, а до 7 включительно. Если не понимаешь почему, ну что ж. Открой решения олимпиадных задач по программированию 🙂 . Писал сразу сюда, слету, так что, сами понимаете, ну и согласен, там есть один лишь недочет. if(!s) нужно поставить за место if(s) и все.
Теперь по простым. Дело в том, что если число делится хотя бы одно из чисел в отрезке [2;7], то оно не простое однозначно. Дальше этого отрезка нет смысла проверять. Сами подумайте просто немного, и поймете, что это так.
[quote name='ZeroMem']Теперь по простым. Дело в том, что если число делится хотя бы одно из чисел в отрезке [2;7], то оно не простое однозначно. Дальше этого отрезка нет смысла проверять.[/quote]Следуя твоей логике, число 999997 – простое, потому что НЕ делится нацело на числа 2,3,4,5,6,7. Но вот незадача: число 999997 замечательно делится на 757 и 1321. А по определению, число называется простым, если оно делится нацело только на 1 и на само себя. Так что до олимпиад по программированию тебе, уж извини, далеко. Сперва за партой посиди. 😀
[quote name='ArchiMage']Тогда давай будем обращать внимание на программы, используемые в реальном мире, а не академические примеры, меряющие производительность языка в попугаях.[/quote]А где их взять – да еще и абсолютно идентичные по алгоритму и как мерять их производительность? С простыми числами все ясно – тупо меряем время. Да и алгоритм простой. А “реальные” приложения?
[quote name='Данилка']И это большой вопрос, обратит юзер на скорость внимание или нет.[/quote]Вопрос совсем небольшой – однозначно больше 0.1 секунды, иначе человек не успеет увидеть реакцию. Плюс время на осознание результата 0.1с*10 (опыт наблюдений за реакцией среднестатистического пользователя).Так что результат выполнения операции, занимающий более 1 секунды для пользователя во внимание принимать не стоит.Плюс к тому – декларативное соглашение с пользователем, что данная операция занимает “много” времени позволит тебе взять отсрочку выполнения операции на нужное тебе время.Возьмем, например расчет зарплаты. Для 150 человек расчет зарплаты в программе СБиС++, написанной на С++, занимает 1,5 минуты.Точно так же написанная на С++ программа 1С считает зарплату на 150 человек 5 минут. Отличие в 3 раза в данном случае декларативно и не подлежит изменению кроме как увеличением быстродействия компьютера.Если ты рассчитываешь метеорологическю ситуацию на земном шаре на текущий момент, тебе понадобится 100 часов машинного времени производительностью в 15 Терафлоп, как ни совершенствуй алгоритмы, они напрямую зависят от математической модели.Так что юзер – тоже вещь растяжимая 😀 [quote name='Данилка']Если операция вызывается десятки раз в секунду? Тогда ты тут будешь бороться за каждую миллисекунду.[/quote]Я и борюсь, но только я не могу повлиять на производительность сервера БД, который ну не может на данной технике выжать более 1 секунды, выполняя запрос на выборке в несколько миллионов записей плюс обновление таблицы и индексов в условиях одновременной работы десятков пользователей и блокировки десятков таблиц.[quote name='Данилка']По части программ. Да, мой недочет в программе на C# был именно с отсутствующим break… по этому 22 секунды вместо 7 сек. Если убрать вывод на консоль, то заканчивает работу программа через секунду.Машина Celeron 2933 Mhz, 1024 Mb RAM DDR-400 (PC-3200).[/quote]На такой машине можно добиться выполнения программы по поиску простых чисел на 2 порядка быстрее (без вывода на консоль), причем это не зависит от языка.
В смысле? От языка по-моему как раз все зависит. Нет, конечно, можно написать очень не оптимальную программу на Си, а можно очень сильно оптимизированную на qBasic и скорость последнего будет выше. Но в данный момент рассматривается не вопрос оптимизации, а вопрос производительности языка.Я желаю знать, как соотносится производительность нового языка и старых языков при одинаковых условиях.
А причем тут язык? От компилятора все зависит, имхо. Так что критичные по времени выполнения участки кода пишем на асме, и все 🙂 .
За .NET ни светлое будущее, ни могила. Он просто займет свою нишу.Насчет производительности, конечно надо мерить на одном и том же компе. Я вот тоже тут накидал немного кода, измеряйте))
#include
const unsigned char True = 1;const unsigned char False = 0;
// быстрый кореньunsigned int sqroot(unsigned int x);// простые числа методом решета Эратосфенаvoid prime_n(unsigned char *v, unsigned int n);// печатает простые числаvoid print_n(unsigned char *v, unsigned int n);
// точка входа))int main(int argc, char* argv[]){const unsigned int n = 100000;unsigned char v[n]; //здесь можно инициализировать, но не буду))prime_n(v, n);print_n(v, n);return 0;}
unsigned int sqroot(unsigned int x){unsigned int a = 1, b = x + 1, ab, xx;while((b – a) > 1){ab = (a + b) / 2;xx = x / ab;if(xx >= ab)a = ab;elseb = ab;}return a;}
void prime_n(unsigned char *v/*array*/, unsigned int n /*size*/){memset(v, True, sizeof(v[0]) * n);for(unsigned int i = 2, j, root = sqroot(n); i <= root; ++i)if(v[i]){j = i + i;while(j < n){v[j] = False;j = j + i;}}}
void print_n(unsigned char *v, unsigned int n){for(unsigned int i = 0; i < n; ++i)if(v[i])printf("%d\n", i);}
Извините за опечатку, строку:Так что результат выполнения операции, занимающий более 1 секунды для пользователя во внимание принимать не стоит.Следует читать как:Так что результат выполнения операции, занимающий менее 1 секунды для пользователя во внимание принимать не стоит.
Реальные приложения в моей сфере не работают с С++, С-шарпом, либо Бейсиком. Я работаю с серверами баз данных, здесь я могу привести абсолютно реальный пример, ежедневно выполняемый и протестированный мной на нескольких БД.Данный тест был вынужненным действием, т.к. он мог убедить таких же зацикленных на производительности в выборе более эффективной и быстрой среды разработки сложных корпоративных многопользовательских гибридных (OLTP+OLAP) систем. К сожалению, бабки послужили значительно бОльшим стимулом к выбору, несмотря на то, что дальнейшие затраты позволяли извлечь выгоду. Как всегда в этом мире – лучше мы заплатим за год 240 тысяч, чем сразу 50 и за год 30 (итого экономия в 3 раза сразу и в 8 раз каждый последующий год)… Вот такая реалити.В качестве языка для связи с внешним миром использую жабу.Сравнивал Жабу, VB и PL/SQL в примерно одинаковых условиях, Жаба оказалась примерно равна нативному бейсику плюс красивость и логичность кода. PL/SQL отработал хужее всех, но он и не предназначен был для таких вещей, на которых сравнивал, хотя работа шла с БД.
На таких математических задачах производительность точки нет нормальная. Но вот с формами начинаются проблемы. И тут уже не зависит от сервера баз данных. Это что-то с отрисовкой. Напоминает работу на ворде за медленным компом. Мышку двинешь, она на секунду (вернее поменьше, конечно) замирает, потом идет далбше. Открываешь другую форму – опять замирает… Вот это раздражает. И чем сложнее форма тем хуже. И это пока не тестировал на реальных формах, где больше всяких контролов.
Поэтому для меня пока будующее точки нет в хранимках, да и то спорный вопрос, ведь пока обходился.
[quote name='Данилка'] … по этому 22 секунды вместо 7 сек. Если убрать вывод на консоль, то заканчивает работу программа через секунду.Машина Celeron 2933 Mhz, 1024 Mb RAM DDR-400 (PC-3200).[/quote]Ты наверно запускал из студии. Я твой бесиковский вариант,ничего не меняя просто в блокнот вставил, откомпилировал, и даже с выводом на консоль примерно секунду выполнялось ну максимум три. и машина послабже.
[quote name='Дикий Билл']Но вот с формами начинаются проблемы. И тут уже не зависит от сервера баз данных. Это что-то с отрисовкой. Напоминает работу на ворде за медленным компом. Мышку двинешь, она на секунду (вернее поменьше, конечно) замирает, потом идет далбше. Открываешь другую форму – опять замирает… Вот это раздражает. И чем сложнее форма тем хуже. И это пока не тестировал на реальных формах, где больше всяких контролов.[/quote]Давай нарисуешь формочку на Nwind.mdb ну или подобной базе и посмотрим, как рисовал, может что делал не так, если такие странные вещи творятся?
Тема затихла, т.к. нет людей, действительно работавших с .NET на разработке реальных приложений кроме меня и еще парочки людей.Тот, кто попробовал использовать .NET после Java, perl, c++, очень довольны скоростью и удобством разработки. К тому же есть бесплатные версии VS.NET 2005 (Express), их вполне хватает для разработки настольных приложений, работающих с Access или SQL Express 2005, причем разработки с высокой скоростью. После VB6 впервые студия стала RAD-ом.
Copyright ©