|
|
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
А третьим игроком будут макросредства, типа MS Access, PB, Lotus Notes, развитые до голосового ввода бизнез-рулз. :) Или докажем что то-то могём, или вымрем как динозавры. .NET тоже на C++ написана, микрософт исходники вывалила, можно полюбоваться. Гарбадж-коллектор оттуда - зело серьезная фишка. Интересно, его можно юзать вне .NET? :) Он там стек прочесывает на предмет поиска переменных в стеке, т.е. там нет счетчика ссылок на объект (обычно). Я насчитал 4 способа уборки мусора, когда просматривал. Кстати - он объекты в памяти двигает! Прикол? И все ссылки сохраняют целостность. Думаю эту фишку вне микрософт писали, уж больно академическая... Насчет MFC - я тут того, либу объектную писал, с 0-ля. Типа эксперименты. Быстродействие вышло гораздо выше, чем у ATL/MFC. И код маленький получается. Нинавижу обе технологии - наелся. Тупо и то и другое. И WTL не сильно сглаживает впечатление. Надо что-то типа System.Windows.Forms по стилю и принципам. MC++ не предлагать! :) Кто хочет поучаствовать в разработке GUI-либы для Win32 на C++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 08:21 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2vdimas: а чем тебе MC++ не нравится?( без шуток - мне действительно интересно ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 08:44 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2vdimas: не пытайся изобрести велосипед. Потеряешь год-два просто так. Лучше изучи что-нибудь стоящее (тот-же WTL). Рукоблудных GUI библиотек - море. На RSDN есть, по крайней мере, две. Так что эта идея не оригинальна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 11:11 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
ну, когда говорю про MC++ то имею ввиду __gc и __value классы. К этим классам неприменимо ничего интересного из C++, на них действуют такие же ограничения, как на классы C#. Можно прочитать отличия MC++ от С++ в MSDN. напр. 1. __gc классы можно наследовать только от __gc классов 2. Множественное наследование позволительно только в виде множественного наследования __interface. 3. забыдь про шаблонные классы и функции. 4. вместо статического приведения типов используй динамический dinamic_cast<>(), при той же сигнатуре он работает по-другому для .NET классов, хотя его смысл остается прежним. 5. __gc классы можно создавать только по new, __value классы создавать по new бесполезно. Я бы использовал MC++ как "связку" c .NET или wrapper, т.к. MC++ класс все же позволяет хранить обычные (не .NET) типы. Т.е. твой чистый С++ класс может быть мембером __gc класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 11:16 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2vdimas: Сейчас рулит идея, что ООП себя не оправдало в смысле повторного использования кода и в данный момент модно говорить о компонентном подходе. А в этой области C++ никаких средств не предоставляет - т.е. развивается не адекватно требованиям. С другой стороны MS и SUN - которые предоставляют развитую инфраструктуру/среду выполнения и динамично развивающиеся языки/средства разработки. Никто никогда не говорил о слобой выразительности C++ - говорили о другом. В частности о его сложности и противоречивости. Оказалось что сам язык сейчас значит далеко не все. Т.е ты же сам знаешь что если сказать что пишешь на C++ - обязательно спросят на чем именно - т.е. среда разработки/выполнения, подходы и т.д. Насчет MC++ - все верно! Остается надеятся, что MS не бросит 1.5 млн разработчиков и наконец обеспечит полную поддержку C++ в CLR. И в принципе работы в этом нарпавлении вроде ведутся - например в VS С++ 2003 было много чего добавлено( в частности partial templates и дизайнер Win Forms ). Если бы они добавили еще и поддержку templates и множественного наследования в CLR !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 11:36 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2 funikovyuri Если бы они добавили еще и поддержку templates и множественного наследования в CLR !!! МН в .Net скорее всего никогда не будет, очень много придётся ломать, да и Smalltalk-подобной концепции абстрагирования это очень противоречит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 13:03 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2Геннадий Васильев: насчет множественного наследования - не знаю и врать не буду. Но вот добовить шаблоны они почти официально обещали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 13:28 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2 alexey_1979 Желание "рукоблудить" пришло давно, по мере изучения внутренних принципов работы MFC/ATL/WTL. На большинство приходящих в обычной работе собощений Windows, в этих библиотеках происходит следующее: 1. reflection всех Notifications 2. PretranslateMessage вдоль по всей иерархии окон. 3. Поиск объекта в MAP-ах по хендлеру. 4. линейное "прочесывание" message maps классов в ответ на КАЖДОЕ ПРИХОДЯЩЕЕ СООБЩЕНИЕ. В моей либе среднее время обработки сообщения примерно на порядок меньше. Да, очень много материала из ATL и WTL можно использовать вне проектов одноименных типов. (всякие EditImpl + тонна вспомогательных полезных классов и утилит) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 17:08 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
Не нужно еще забывать про такую вещь, как TrollTech QT. Хотя я почти уверен, что большинство из Java и C# обожателей про это даже не слышали. Очень даже неплохая библиотека классов (много лучше MFC), плюс - многоплатформенность, отражение (!!), визуальный редактор форм. Но цена!!!! :((( Правда, есть бесплатная некоммерческая версия - но для Windows не очень свежая :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 11:40 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2Vdimas я бы рад поучавтсвовать в создании гуи либы, но... время маловата, кое-что начал писать для себя, но потом подумал, может взять существующие... амулет тот же или гтк или кутэ... желательно чтоб кросс-платформенность присутствовала... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 10:20 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
Возражения : 1. Все "в пользу" имеют ограниченную область применения. Например, сборка мусора в Java иногда полезна, иногда вредна. Кому не приходилось сидеть и ждать, пока runtime не закончит сей процесс. Хуже библиотек чем в Java я вообще не видел. итп. 2. > Для С++ можно использовать технологию COM для аналогичных целей. Для каких ? Для сборки мусора ? Здесь что-то не так. > Какой процент классов в реальном приложении на Java и C# использует reflection Какая разница, какой процент ? Это вопрос проектирования. >Язык Java не люблю до сих пор, может быть в этом дело ? >Самый-пресамый интересный момент. Действительно, интересный. Фактически автор утверждает, что на С++ все пишут неправильно, кроме самого автора. Я не спорю, возможно это даже верно, но это ни в коем случае не является аргументом ЗА. Может быть вопрос поставить так : если все пишут неправильно, может что-то не так с языком ? (а что не так - в Java есть общий предок для всех объектов, а в С++ нет, отсюда описанная проблема) > Языки типа Java и C# изначально по своим возможностям являются подмножествами языка С++ Утверждать это - само по себе неграмотно. В строгом смысле слова "подмножество языка" это когда мы можем скомпилировать программу на подмножестве компилятором для надмножества, возможно с косметическими изменениями. >При желании, и наличии единомышленников, можно попытаться собрать некий framework, на основе этого самого материала, вместо того, чтобы каждый раз писать новый. У самого есть масса наработок, которые надо бы классифицировать, сделать легкий рефакторинг и (я надеюсь, с удовольствием) использовать. >Кто за - поднимите руки! Я - за. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 16:28 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
А кто может что сказать на VC++ оптимальнее код получается ? чем на BC++ ?? проверять самому неохота ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 16:35 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2vdimas: [q] 1. reflection всех Notifications [/q] Оказ от этого заметно усложнит реализацию и использование. [q] 2. PretranslateMessage вдоль по всей иерархии окон. [/q] Не понял? Если тебе не нравиться, что нужно вызывать m_view.PreTranslateMessage и PreTranslateMessage CMainFrema, то как реализовать, чтобы он автоматом вызывался? А если мне не нужен PreTranslateMessage во вью? Макрос. Опять усложнение. [q] 3. Поиск объекта в MAP-ах по хендлеру. [/q] Чаво? MAP разворачивается в большой if then else. Это самое эффективное в данной ситуации. Ты же не будешь создавать массив обработчиков на несколько тысяч элементов для того, чтобы обработать пару сообщений. Альтернатива чуть по медленее была в реализована в MFC. Но это, ИМХО, полная лажа. Тяжело и не продуктивно. [q] 4. линейное "прочесывание" message maps классов в ответ на КАЖДОЕ ПРИХОДЯЩЕЕ СООБЩЕНИЕ. [/q] См. предыдущий ответ. Если у тебя есть конкретные предложения, милости просим в форум ATL/WTL на RSDN. Я сам не проч заняться созданием более продуманного фрейморка для GUI аплитух, но только 1. После выхода wtl7.1 2. После изучения и выявления недостатков всех существующих аналогов. Твой пост, уж прости, на подробный анализ, походит очень отдаленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 18:27 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2 Yossarian Может быть вопрос поставить так : если все пишут неправильно, может что-то не так с языком ? (а что не так - в Java есть общий предок для всех объектов, а в С++ нет, отсюда описанная проблема) Однако, если те, кто "пишет правильно" добивается хороших результатов, то логично ведь предположить, что те, кто их не добился - пишут неправильно. Ну или, скажем так, не в полной мере используют возможности языка. Так что, увы, на C++ действительно часто и много пишут неправильно. Порой ещё и агрессивно защищая достаточно примитивный стиль и прочее. И ещё. То, что все не могут в чём-то разобраться - это их собственные проблемы, а не того конкретного артефакта, в котором они не могут разобраться. ИМХО, из этой простой посылки и следует исходить. :) Знаешь, порой действительно оказывается, что все ошибаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2003, 03:52 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2 alexey_1979 Меня можно смело считать еретиком, потому как: 1. reflection всех Notifications Оказ от этого заметно усложнит реализацию и использование. А я порой не использую встроенные классы окон, типа "Button", "ComboBox", "ListBox", т.к. имею с 0-ля написанные ООП-аналоги. И мне не нужен Reflection, достаточно наследования для переопределения СВОИХ СОБСТВЕННЫХ свойств или поведения. 2. PretranslateMessage вдоль по всей иерархии окон. Не понял? Если тебе не нравиться, что нужно вызывать m_view.PreTranslateMessage и PreTranslateMessage CMainFrema, то как реализовать, чтобы он автоматом вызывался? В том то и дело, что не понял. НЕ ДОЛЖНО БЫТЬ НИКАКОГО PretranslateMessage вдоль по всей иерархии окон. Это как хук по смыcлу, т.е. "черный вход", т.е. слабость самой модели. В своем GUI оно мне ПРИНЦИПИАЛЬНО не нужно! 3. Поиск объекта в MAP-ах по хендлеру. Чаво? MAP разворачивается в большой if then else. Это самое эффективное в данной ситуации. Ты же не будешь создавать массив обработчиков на несколько тысяч элементов для того, чтобы обработать пару сообщений. Вот пример расточительного использования возможностей языка. if-else, понимаешь... Загляни в файлы с описанием WM_XXXX, сколько там реальных сообщений? (я спрашиваю именно про общие сообщения, всякие EM_XXXX не берем, потому как в моей модели их НЕТ). Так вот, там чуть больше 200 реально используемых сообщений. Слушай внимательно: В моей модели я использую всего только 3 класса окон: простой контрол, контрол-контейнер, форма. Все! Большинство сообщений (99.99% из общего приходящего потока) в своей оконной процедуре просто достают адрес объекта из самомого экземляра МОЕГО класса окна (а не из многотысячного ATL/MFC MAP-а) и переходят сразу на функцию из таблицы. Т.е. у меня примерно 200 функций-обработчиков. Очень простых функций. Каждая функция-обработчик просто вызывает виртуальную функцию объекта! Поэтому у меня нет "прочесывания" MAP-ов на предмет поиска сообщений или на предмет if-else. Почему же мне потребовалось 3 класса окна? Все эти классы оперируют одними и теми-же процедурами, просто используют разный их набор в своем массиве указателей на функции-обработчики. Самый младший из них - "контрол" просто игнорирует приличную часть сообщений, для него не предназначенную, чтобы не вызывать лишний раз виртуальную функцию, т.е. определив всего еще 2 таблицы из 200 элементов я получил дополнительное повышение эффективности. Разработчик может наследовать свой GUI-элемент от Control, ControlContainer и Form - классов, используя разные базовые классы для требуемого множества перехваченных сообщений. Повторюсь - у меня все работает примерно на порядок быстрее, чем MFC/WTL. В этих библиотеках на каждое приходящее сообщение происходит тонна всяких бесполезных вызовов, у меня - не происходит ничего (вызов одной виртуальной функции и то не всегда, см. Control, ControlContainer, Form). Если у тебя есть конкретные предложения, милости просим в форум ATL/WTL на RSDN. ok. Только насколько это приятно - обсуждение тонкостей - если немного тошнит от самой концепции. Правда, в своих коммерчесских разработках я пока использую WTL или MFC, потому как мой фреймворк требует разработки аналогов всех контролов (!!!). Однако, посмотрите что твориться с C#! Не успел толком выйти, как под него народ уже написал тысячи и тысячи контролов. Почему? Да потому, что там нужно просто отнаследоваться и переопределить несколько виртуальных функций - это на порядок проще, а главное - на порядок типобезопаснее, чем MESSAGE_MAP-ы. В моей либе - та же самая ситуация. Написать новый контрол так же легко, как на C#. Поэтому и приглашаю единомышленников. Программируя на MFC/WTL я изучил WinAPI практически наизусть. А не пошел бы он... Очень смешно - программируешь на ООП-библиотеке, при этом думаешь понятиями OS API. У меня сообщения Windows "спрятаны" в самых базовых классах и о них можно забыть - это тонкости конкретной платформы. Я сам не проч заняться созданием более продуманного фрейморка для GUI аплитух, но только 1. После выхода wtl7.1 2. После изучения и выявления недостатков всех существующих аналогов. Изучал QT и WxWindows. QT - весьма оторвана от чего бы то ни было, в то время как моя либа обладает общей событийной моделью для всех классов, а не только для GUI. Т.е. у меня событие (не сообщение!) может получить экземпляр какого угодно класса (как в C#) и даже просто CallBack - функция (как только в С++) WxWindows - сильно, весьма... Но хочется сильнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2003, 22:52 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2 Фурников Юрий Сейчас рулит идея, что ООП себя не оправдало в смысле повторного использования кода и в данный момент модно говорить о компонентном подходе. Если под компонентным подходом ты подразумеваешь открытые "чисто"-виртуальные интерфейсы, т.е. всего лишь "побочный" эффект множественного наследования. В .NET и Java, наряду с открытыми "голыми" интерфейсами так же рулит идея открытых базовых классов - это все одного поля ягоды... Никто никогда не говорил о слобой выразительности C++ - говорили о другом. В частности о его сложности и противоречивости. Сложность - да. Но без некоторой сложности не добиться некоторой выразительности. Слабый аргумент, особенно в эпоху насыщения рынка программистами. Кто не тянет - нафиг из области. Оказалось что сам язык сейчас значит далеко не все. Т.е ты же сам знаешь что если сказать что пишешь на C++ - обязательно спросят на чем именно - т.е. среда разработки/выполнения, подходы и т.д. К счастью компиляторы "движуться" на встречу друг-другу, вернее навстречу стандартному С++. Свои программы я обычно компилю на VC.NET и GCC для пущей переносимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2003, 23:03 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2 Yossarian > Для С++ можно использовать технологию COM для аналогичных целей. Для каких ? Для сборки мусора ? Здесь что-то не так. > Все так, и то и другое - подходы к контролю времени жизни объектов. И там и там используется общий смысл - объект уничтожается тогда, когда на него никто больше не ссылается. >Язык Java не люблю до сих пор, может быть в этом дело ? А может, все же, яйцо раньше курицы... :) >Самый-пресамый интересный момент. Действительно, интересный. Фактически автор утверждает, что на С++ все пишут неправильно, кроме самого автора. Нет. В том же посте ниже я приводил причину большого размера программ - это недостаточность существующих библиотек. При ПРОЧИХ РАВНЫХ условия программа на С++ обычно никак не меньше аналогов на Java или C#. (а что не так - в Java есть общий предок для всех объектов, а в С++ нет, отсюда описанная проблема) Попал в точку! Почти... Для всех объектов мне и не нужен один базовый класс, а вот для всех Exception - крайне необходим! Я бы запретил выброс Exception произвольного типа на уровне языка (фанаты С++ - не бейте), а оставил бы только унаследованные от некоторого одного класса (компилятор -> конкретный класс - не очень красивая связка, однако typeid использует тот же подход) > Языки типа Java и C# изначально по своим возможностям являются подмножествами языка С++ Утверждать это - само по себе неграмотно. В строгом смысле слова "подмножество языка" это когда мы можем скомпилировать программу на подмножестве компилятором для надмножества, возможно с косметическими изменениями. Именно так. Все вполне грамотно. (если, опять же, не иметь ввиду Reflection) Я - за. :)) угу, т.е. С++ все-равно умирать не собирается! (а иначе на чем будут .NET - фреймворки писать?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2003, 23:23 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
в предыдущем посте читать: >Самый-пресамый интересный момент. Действительно, интересный. Фактически автор утверждает, что на С++ все пишут неправильно, кроме самого автора. Нет. В том же посте ниже я приводил причину большого размера программ - это недостаточность существующих библиотек. При ПРОЧИХ РАВНЫХ условия программа на С++ обычно никак не больше аналогов на Java или C#. Да и с мнением Геннадия Васильева согласен - многие пишут так себе. В основном это то поколение, которое выросло на всяких Wizard-ах. (хотя, бывают исключения, у меня есть знакомый парень, 22 года, удивительно правильно мыслит и кодит). www.codeproject.com - полно материала для подобного исследования. Порой там встречаются очень неплохие вещи, но большей частью - всякая ерунда. Материалы на сайте позволяют оценить средний уровень современного программиста. Это может и хорошо, что есть Java и C#. Кому С++ кажется слишком сложным - просим туда. Не представляю грамотного С++-ника, который бы полностью разменялся на Java или C#. Я вот практически в совершенстве VB и VBScript знаю - писал несколько гибридных проектов, "стыковался" с ними при помощи COM. И что с того? VB-рулез? Теперь активно изучаю .NET и C#, но "дно" уже видно. После изучения исходников .NET-а, и двоичного формата .NET-объектов, для меня вообще никаких интересных моментов относительно .NET не осталось. Мне откровенно импонирует язык C#, там где я раньше использовал VB, теперь буду использовать только его (учитывая беспланую VSA-engine). Но это все рассматриваю только как неплохое дополнение, которое очень экономит время в некоторых случаях. Просто полно ситуаций, когда на Java или C# поставленную задачу НЕВОЗМОЖНО РЕШИТЬ. Потому от С++ никуда не деться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2003, 23:52 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
Любителям Delphi:\r \r Обратите внимание, народ 2 недели пишет DBImage - компонент (6-й пост и ответ тигра в 11-м)\r \r /topic/45348\r \r Очень показательно.\r На с++ это примерно за пол-дня делается, если не за 2 часа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2003, 01:11 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
Давайте уж мухи отдельно, котлеты отдельно. Проблема с DBImage - проблема VCL, а не Delphi в целом. Можно ту же VCL на C++ перелопатить, но лучше от этого она не станет. Реально проблема лишь в том, что методы записи/чтения изображения в базу не виртуальны, сиречь переопределению не подлежат. Если бы было одно лишнее слово в определении : virtual, то и постов по этому поводу многочисленных повсюду бы не было... А так, в сухом остатке, примерно 60% времени ушло на копание исходников VCL, 25% на кодирование пробных непрошедших тестирование решений, 15% на создание итогового решения. А вообще-то, просто абсолютное большинство пользователей Delphi не заморачивается таким компонентом, а просто делает Copy+Paste кусков внешнего кода, реализующих запись/чтение в базу. Это делается гораздо быстрее, примерно минут за 15 написание первого куска, а потом по 1 мин. на Ctrl-C, Ctrl-V :-) Это уж мы, привыкшие к приличной архитектуре, объектному подходу и т.д. извращаемся... поскольку проект позволяет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2003, 11:43 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
чтобы с++ не умер, нужно на нем программировать :-) народ, посоветуйеи кроссплатворменную библиотек классов для гуи, пожалуйста... хочу писать переносимые приложения :-) хотя бы вин32-Хвин начал писать сам, понял что геморно, хотя вполне реально... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2003, 12:13 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2 alex_k WxWindows, в и-нете с пол-пинка найдешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2003, 19:17 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
нашел, спасибо :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2003, 19:35 |
|
||
|
Не дадим C++ в обиду
|
|||
|---|---|---|---|
|
#18+
2Vdimas что-то больно громоздкая вешь эта wxWindows 45 мег исходники, которые нужно сначала скомпилить... в общем я скомпилить не смог :-) по прощще ничего нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2003, 21:30 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32239992&tid=2034114]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
81ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 444ms |

| 0 / 0 |
