Тема: скорость работы программ

Ответить в теме
Показано с 1 по 3 из 3
  1. Вверх #1
    Живёт на форуме Аватар для aleyer
    Пол
    Мужской
    Адрес
    Там же
    Возраст
    33
    Сообщений
    4,676
    Репутация
    1337

    По умолчанию скорость работы программ

    есть комп с е7200, ноут с t2370. есть программа. бестолковый способ выяснения сколько возможных комбинаций - перебором всех комбинаций. вот код:

    Код:
    #include <iostream>
    #include <fstream>
    #include <stdlib.h>
    
    using namespace std;
    int a[11];
    ofstream fout;
    long long combs = 1;
    const int n = 80, m = 10; // total, to-take
    
    void calc (int from)
    {
        int i,j;
        if (from<10)
        {
            for (i=a[from];i<80-2*(10-from);i++)
            {
                a[from]=i;
                a[from+1]=a[from]+2;
                calc(from+1);
            }
        }
        else for (i=a[from-1]+2; i<=80; i++)
        {
            combs++;
            a[10]=i;
            /*for (j=1;j<11;j++) fout<<a[j]<<' ';
            fout<<endl;*/
            //system("cls");
            cout<<combs<<endl;
        }
    }
    
    int main()
    {
        int k;
        fout.open("res.txt");
        for (k = 0; k<10; k++) a[k+1]=2*k+1;
        //for (i = 1; i<=10; i++) cout<<a[i]<<' '<<endl;
        calc(1);
        /*fout<<endl;
        fout<<combs;*/
        //system("cls");
        cout<<combs<<endl;
        fout.close();
        return 0;
    }
    весь прикол в чем - на ноуте мандрива с gcc, ide - code::blocks. на компе XP, и code::blocks и VS 2003.
    та вот на ноуте за секунду перебираются около 100000 комбинаций, а на компе - около 10000. с чего бы быть такой разнице? проекты в Release собраны


  2. Вверх #2
    Посетитель
    Пол
    Мужской
    Сообщений
    487
    Репутация
    49
    Цитата Сообщение от aleyer Посмотреть сообщение
    та вот на ноуте за секунду перебираются около 100000 комбинаций, а на компе - около 10000. с чего бы быть такой разнице? проекты в Release собраны
    Чем засекал и с какого момента? Секундомер, мне кажется, лучше встроить в код. И я бы воздержался от вывода в файл для сравнения производительности.

  3. Вверх #3
    Живёт на форуме Аватар для aleyer
    Пол
    Мужской
    Адрес
    Там же
    Возраст
    33
    Сообщений
    4,676
    Репутация
    1337
    сначала хотел в файл, сейчас в косольное окно. 765 миллионов насчитало пока. будет еще долго. засекал глазом, разница просто сильно видна. я бы убрал вывод в консоль, но тогда будет непонятно, сколько уже было сделано. предполагаю, что это может быть связано с выводом в консоль, то есть на вывод в винде тратится больше, чем на подсчет комбинации.
    ...
    поправил код, убрал идиотский цикл с combs++ ом, вместо него нормальное выражение. теперь миллион за секунду считает, что гораздо лучше. надеюсь нигде не ошибся

    но сам феномен интересен все равно. хотя кажется я его понял. на ноуте 75% ресурсов отбирает konsole, а только около 20 - сами вычисления. выбросил постоянный вывод в консоль. теперь 100% ресурсов одного из ядер занимают вычисления. а на компе оба ядра загружались неполностью. на 45% и 20% приблизительно.
    ...
    время просчета результата без вывода в консоль получилось пропорциональными частоте процессора. ноут - 15 минут, комп - 10
    Последний раз редактировалось aleyer; 29.01.2009 в 16:45.

Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения