В каждом районе будет разная статистика. И у разных слоёв населения. И по возростной категории тоже мого различий. Так что 10 человек из 48 млн. это очень моло.
Ну, правильно, что бы ты не передавал, ты всегда знаешь, что передаешь. И нету никаких неявный конвертаций типов, никаких левых неконтролируемых преобразований и т.п.
И дело чаще не в количестве вычислений, а в правельности... Это ж как статистика, статистика (по статистике ) ошибается не больше чем на 2-4%... всмысле если выйти на улицу, взять 10 первых попавшихся людей, и спросить есть ли у них мобильный, то у 90% из этих 10 будет мобильный. А потом всю Украину опросить, и окажеться тоже самое, у 90% населения есть мобильный... Смысл опрашивать всех, когда можно 10 случайных?
Сергей Юдин, ок, без проблем. Меня всегда можно найти в асе...
К сожалению не знаю, как и где Вас искать в асе по этому даю недокументированную ссылку на черновой вариант статьи здесь http://modsys.narod.ru/Ris/Vibor.zip а архивы с программами выложу немного попоздней.
Статья изобилует орфографическими и пунктуационными ошибками, особенно часто встречается "по этому" вместо "поэтому". Язык путаный, нет никакого смыслового деления.
Бенчмарк надуманый, в частности, на нем FreeBasic якобы в 8 раз обгоняет VC на якобы одной задаче. В то же время автор пишет, что не смог полностью так же переписать код, т.к. в C++ нет goto, что свидетельствует о незнании предмета и ненаучном подходе. Я провел небольшой бенчмарк на своем любимом Фиббоначчи-тесте, который показывает, сколько лишнего кода генерирует компилятор
FreeBasic 0.16 stable
#include once "windows.bi"
#include once "win/mmsystem.bi"
t1 = timeGetTime()
function fibo(n)
if n = 1 or n = 2 then
function = 1
else
function = fibo(n-1) + fibo(n-2)
end if
end function
print fibo(40)
t2 = timeGetTime()
print t2-t1; " ms"
MS Visual C++ 2005
#include <iostream>
#include <windows.h>
using namespace std;
#pragma comment(lib, "winmm.lib"
int fibo(int n){
if(n == 1 || n == 2) return 1;
else return fibo(n-1) + fibo(n-2);
}
Что демонстрирует преимущество C++ почти в 3 раза. Короче, картина неверна даже приблизительно. Дальше в статье та же самая путаница, цифры, непонятно чему соответствующие, измышления автора по поводу эволюции языков программирования и т.п.
Мое резюме: статья практической и научной ценности не имеет.
мда... Без обид, Сергей Юдин, учите мат часть...
Можно было процитировать глупые моменты в статье, но их настолько много, статья настолько большая и безполезная, что просто лень тратить на это время. Вы невладеете неодним языком на котором проводили тесты. Нельзя спорить о том, в чём сам неуверен... Вы проводите тесты, сравнивая по скорости кофеварки с холодильниками, в которых побеждают утюги итп итд... Причём досовские компиляторы? Причём здесь Ваше имхо о языках, кто из них для кого удобнее... В статье всё размыто, обобщено, приведены неверные факты. Вообщем незачёт.
Я конечно согласен, что краткость сестра таланта, но все же надеялся, что Вы хоть пару замечаний слелаете конкретных, а не "вообщем". Ну что же будем работать дальше. А если кто-то еще захочет высказаться более конкретно, то я на всякий случай дам ссылки на архивы программ использованных при написание статьи.
http://modsys.narod.ru/Prog/TestBench.zip
http://modsys.narod.ru/Prog/TestSpusk.zip
http://modsys.narod.ru/Prog/TestSpuskM.zip
Ну отпишитесь хотя бы по моим комментариям, а то прямо неприлично - я ведь все-таки время потратил, комментируя этот... труд (напрашивалось другое слово из 4 букв с д на конце)
Я долго наблюдал за Вашей дискуссией оставаясь в стороне, но все же решил взглянуть на ту часть, что относится к языку NET, как наиболее близкую мне на данный момент. Взглянул, и не смог промолчать. (
Я не берусь судить о научной ценности вашей статьи, но что касается кода(тут и далее я говорю исключительно о NET), то тут я бы вам советовал никому из программистов его не показывать по следующим причинам:
1. Код абсолютно нечитаем и плохо структурирован
2. Изобилует устаревшими операторами типа GOTO, ONERROR (вы что нибудь о Try...Catch...Finally слышали?)
3. Масса логических ошибок в проверках условий
4. Налицо незнание VBNET как такового. Например вместо проверки CheckState логичнее было бы проверить булевое свойство Checked.
5. Абсолютное незнание принципов работы с Graphics.
- Вместо того,чтобы рисовать прям на форме используя собыие Paint, вы рисуете на картинке после чего загоняете в PictureBox
- Вы утверждаете, что долгое время писали на VB6 и вместо того,чтобы для закрашивания 1(ОДНОГО) пиксела методом SetPixel вы используете ЗАЛИВКУ прямоугольника с длиной стороны в 1 пиксел!
If i = 1 Then gg.FillRectangle(Brushes.Blue, XG, YG, 1, 1)
If i = 2 Then gg.FillRectangle(Brushes.BlueViolet, XG, YG, 1, 1)
If i = 3 Then gg.FillRectangle(Brushes.Brown, XG, YG, 1, 1)
If i = 4 Then gg.FillRectangle(Brushes.Red, XG, YG, 1, 1)
Это по вашему нормально?
Кроме того, в НЕТ есть масса методов для рисования дуг,кривых,секторов на основе массива точек .. а вместо этого вы используете попиксельный вывод графики сначала на картинку,затем переносите ее в PictureBox
6. На первом же тесте, программа упала с OverflowException (Arithmetic operation resulted in an overflow.)
Из всего вышесказанного я могу сделать только один вывод, что Ваши навыки очень далеки от профессионализма, и Ваш код напоминает код человека, впервые увидевшего НЕТ (справедливости ради стоит заметить, что это типичные ошибки новичков от VB6 ), а посему судить о быстродействии того или иного языка (в частности NET), и тем более что-то рекомендовать несведующим людям без достаточных на то знаний и навыков, Вы не имеете никакого морального права.
Что касается предложенного Вами бенчмака, то он конечно же такой же бестолковый, как и тот, что использовал я, но он мне помог найти ошибку. Я оказывается сделал Debug вместо Relase. Теперь данные по VisualC++ для моего бенчмака примерно такие же, как для C++ и FreeBasic, а конкретно 0,812 сек для 2-го варианта и 0,797 для 3-го.
А что касается Вашего бенчмака, то тут у меня данные несколько отличаются от Ваших.
FB=4,203 сек
VC=2,188 сек
Но для абстрактного бенчмака это вполне приемлемый результат.
Из всего вышесказанного я могу сделать только один вывод, что Ваши навыки очень далеки от профессионализма, и Ваш код напоминает код человека, впервые увидевшего НЕТ (справедливости ради стоит заметить, что это типичные ошибки новичков от VB6 ), а посему судить о быстродействии того или иного языка (в частности NET), и тем более что-то рекомендовать несведующим людям без достаточных на то знаний и навыков, Вы не имеете никакого морального права.
Да это действительно моя первая программа на VB NET и еще несколько месяцев назад я в соседней теме на этом форуме просил подсказать мне, как вывести данные на картинку в VB NET. Так что я свои познания во всех существующих языках программирования и не скрываю, но только, те кто мог бы помочь в этом вопросе, заняты более важными делами и по этому приходиться все писать самому, хотя я себя вообще не считаю программистом, т.к. занимаюсь математическим моделированием систем и статью пишу точно для таких же специалистов далеких от программирования. А, если Вы хороший специалист по VB NET, то не могли бы подправить программу SpuskVBnetM, чтобы не было сомнений в показателях ее работы.
Что касается предложенного Вами бенчмака, то он конечно же такой же бестолковый, как и тот, что использовал я
Он, по крайней мере, верный, и замеряет время исполнения одинакового кода с одинаковым количеством итераций.
А что касается Вашего бенчмака, то тут у меня данные несколько отличаются от Ваших.
Бенчмарк должен запускаться на чистой машине с объемом свободной физической оперативной памяти более 100 МБ, при постоянной загрузке процессора более 1 минуты менее 2%, из консоли Windows. Бенчмарк должен работать с приоритетом realtime, во время его работы никаких движений мыши, нажатий на клавиатуру, включенных микрофонов и веб-камер быть не должно. Это - бенчмарк, а остальное - фуфло.