На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (4) [1] 2 3 ... Последняя » все  ( Перейти к последнему сообщению )  
> bool vs BOOL
    Что лучше с точки зрения производительности и вообще?
    И кстати есть ли BOOL в никсовых компиляторах?
      Цитата RomanTTT @
      И кстати есть ли BOOL в никсовых компиляторах?
      Конечно есть. Более того, есть в любом компиляторе C/C++
      ExpandedWrap disabled
        typedef int BOOL;


      Добавлено
      Цитата RomanTTT @
      Что лучше с точки зрения производительности и вообще?
      А сам поэкспериментировать не пробовал?
        Цитата
        Что лучше с точки зрения производительности

        Не в том месте ты бутылочное горло ищешь :no:
          Граждане, объясните для неСи-шников, в чём разница?
            Цитата
            Граждане, объясните для неСи-шников, в чём разница?


            bool - специфицирован в Стандарте. sizeof(bool) = 1 (см. Стандарт C++ 2003 года).
            BOOL - есть в WinAPI. Но ничего не мешает его сделать где угодно ещё. sizeof(BOOL) = 4.

            +доп. фишки: на std::vector<bool> в STL есть очень модная и быстрая специализация, которой нету для std::vector<BOOL>.

            Но это всё - мелочи жизни, если разобраться.
            Сообщение отредактировано: BugHunter -
              Цитата trainer @
              Цитата RomanTTT @
              И кстати есть ли BOOL в никсовых компиляторах?
              Конечно есть. Более того, есть в любом компиляторе C/C++
              ExpandedWrap disabled
                typedef int BOOL;

              А почему прямо так в любом и везде int? Это какая-то негласная договоренность? Ведь в стандарте нет никакого BOOL
                Наверное, он имел в виду, что "если в каких то отсталых компиляторах его нету, то его будет несложно сварить самому из топора и сапога, добавив в варево немножко кирпичей".

                Добавлено
                (а вот, например, тот же тип CHAR использовать не рекомендуется)

                Добавлено
                (так же как и тип INT - нету WinAPI функций, в которых использование их было бы обосновано).
                  Цитата trainer @
                  А сам поэкспериментировать не пробовал?

                  Получается bool эффективнее.
                  Вот тестовая прога
                  ExpandedWrap disabled
                    void main()
                    {
                        clock_t start, finish;
                        double diffTime = 0.0f;
                        double duration;
                        BOOL* b1 = new BOOL[50000000];
                        start = clock();
                        for(ULONG i = 0; i < 50000000; ++i)
                        {
                            b1[i] = FALSE;
                            if(!b1[i])
                                b1[i] = TRUE;
                        }
                        finish = clock();
                        delete[] b1;
                        duration = (double)(finish - start) / CLOCKS_PER_SEC;
                        printf("Time for BOOL is %2.2f seconds\n", duration);
                        ////////////////////////////////////////////////////
                        bool* b2 = new bool[50000000];
                        start = clock();
                        for(ULONG i = 0; i < 50000000; ++i)
                        {
                            b2[i] = false;
                            if(!b2[i])
                                b2[i] = true;
                        }
                        finish = clock();
                        delete[] b2;
                        duration = (double)(finish - start) / CLOCKS_PER_SEC;
                        printf("Time for bool is %2.2f seconds\n", duration);
                        getch();
                    }

                  в релизе для bool 0.11, для BOOL 0.41
                  в дебаге разница меньше, но тоже в пользу bool
                  :)
                  Сообщение отредактировано: RomanTTT -
                    Ну, примерно этого и следовало ожидать.
                    Цитата
                    в релизе для bool 0.11, для BOOL 0.41

                    как раз примерно в 4 раза = sizeof(BOOL)/sizeof( bool )
                      А ведь машинное слово вроде 2 байта. Я думал память читается сразу словами, поэтому как раз не ожидал большого преимущества у bool.
                      Или работа с памятью идет через отдельные байты, а не слова?
                        Ну, этим тестом ты скорее доступ к куче тестировал :)
                        Которая в случае с BOOL получилась в 4 раза больше.
                        А так же возможно (я не знаю, сколько у тебя оперативы) своп :yes:
                        (а то, что 10000 Кб из памяти считаем быстрее, чем 40000 Кб - это очевидно)
                        Сообщение отредактировано: BugHunter -
                          Цитата RomanTTT @
                          А почему прямо так в любом и везде int?
                          Не нравится int - напиши char.
                          Цитата BugHunter @
                          sizeof(bool) = 1
                          Точно? В варианте 1998 года:
                          Цитата
                          Note: in particular, sizeof(bool) and sizeof(wchar_t) are implementation-defined69)
                          ...

                          69) sizeof(bool) is not required to be 1
                            ExpandedWrap disabled
                              double


                            Так и должно подсвечивать?
                              Цитата trainer @
                              Цитата
                              Note: in particular, 69) sizeof(bool) is not required to be 1

                              :yes: и в 2003 так

                              -Added
                              Цитата trainer @
                              Не нравится int - напиши char.

                              Мне вообще BOOL не нравится. Поскольку мы в холиварах я за bool :D
                                Цитата
                                Точно? В варианте 1998 года..

                                Точно. В 2003. (счазз найду точную цитату..)
                                Сообщение отредактировано: BugHunter -
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0367 ]   [ 14 queries used ]   [ Generated: 20.05.24, 11:07 GMT ]