Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.11.62] |
|
Страницы: (4) [1] 2 3 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Что лучше с точки зрения производительности и вообще?
И кстати есть ли BOOL в никсовых компиляторах? |
Сообщ.
#2
,
|
|
|
Цитата RomanTTT @ Конечно есть. Более того, есть в любом компиляторе C/C++ И кстати есть ли BOOL в никсовых компиляторах? typedef int BOOL; Добавлено Цитата RomanTTT @ А сам поэкспериментировать не пробовал? Что лучше с точки зрения производительности и вообще? |
Сообщ.
#3
,
|
|
|
Цитата Что лучше с точки зрения производительности Не в том месте ты бутылочное горло ищешь |
Сообщ.
#4
,
|
|
|
Граждане, объясните для неСи-шников, в чём разница?
|
Сообщ.
#5
,
|
|
|
Цитата Граждане, объясните для неСи-шников, в чём разница? bool - специфицирован в Стандарте. sizeof(bool) = 1 (см. Стандарт C++ 2003 года). BOOL - есть в WinAPI. Но ничего не мешает его сделать где угодно ещё. sizeof(BOOL) = 4. +доп. фишки: на std::vector<bool> в STL есть очень модная и быстрая специализация, которой нету для std::vector<BOOL>. Но это всё - мелочи жизни, если разобраться. |
Сообщ.
#6
,
|
|
|
Цитата trainer @ Цитата RomanTTT @ Конечно есть. Более того, есть в любом компиляторе C/C++ И кстати есть ли BOOL в никсовых компиляторах? typedef int BOOL; А почему прямо так в любом и везде int? Это какая-то негласная договоренность? Ведь в стандарте нет никакого BOOL |
Сообщ.
#7
,
|
|
|
Наверное, он имел в виду, что "если в каких то отсталых компиляторах его нету, то его будет несложно сварить самому из топора и сапога, добавив в варево немножко кирпичей".
Добавлено (а вот, например, тот же тип CHAR использовать не рекомендуется) Добавлено (так же как и тип INT - нету WinAPI функций, в которых использование их было бы обосновано). |
Сообщ.
#8
,
|
|
|
Цитата trainer @ А сам поэкспериментировать не пробовал? Получается bool эффективнее. Вот тестовая прога 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 |
Сообщ.
#9
,
|
|
|
Ну, примерно этого и следовало ожидать.
Цитата в релизе для bool 0.11, для BOOL 0.41 как раз примерно в 4 раза = sizeof(BOOL)/sizeof( bool ) |
Сообщ.
#10
,
|
|
|
А ведь машинное слово вроде 2 байта. Я думал память читается сразу словами, поэтому как раз не ожидал большого преимущества у bool.
Или работа с памятью идет через отдельные байты, а не слова? |
Сообщ.
#11
,
|
|
|
Ну, этим тестом ты скорее доступ к куче тестировал
Которая в случае с BOOL получилась в 4 раза больше. А так же возможно (я не знаю, сколько у тебя оперативы) своп (а то, что 10000 Кб из памяти считаем быстрее, чем 40000 Кб - это очевидно) |
Сообщ.
#12
,
|
|
|
Цитата RomanTTT @ Не нравится int - напиши char.А почему прямо так в любом и везде int? Цитата BugHunter @ Точно? В варианте 1998 года:sizeof(bool) = 1 Цитата Note: in particular, sizeof(bool) and sizeof(wchar_t) are implementation-defined69) ... 69) sizeof(bool) is not required to be 1 |
Сообщ.
#13
,
|
|
|
double Так и должно подсвечивать? |
Сообщ.
#14
,
|
|
|
Цитата trainer @ Цитата Note: in particular, 69) sizeof(bool) is not required to be 1 и в 2003 так -Added Цитата trainer @ Не нравится int - напиши char. Мне вообще BOOL не нравится. Поскольку мы в холиварах я за bool |
Сообщ.
#15
,
|
|
|
Цитата Точно? В варианте 1998 года.. Точно. В 2003. (счазз найду точную цитату..) |