|
|
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
Для качественной организации кода. Слышали про такое развлечение - бег в мешках? Так вот, код без этой фичи его напоминает - точно так же всё вместе в один мешок. Если привык ходить на двух ногах, то постоянному бегу в мешках.. ну можно, конечно, приколоться, но не более того. Ну объявите вы классы в одном месте. Реализуете в другом. Чем вам так поможет список классов в отдельном файле? Если мне нужен будет список классов я посмотрю его в отдельном окне IDE и сразу же перейду к нужному методу класса. А вот список мне никак не поможет, ну да есть такой, а где он? что в нём? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 17:56 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
AHTOH_LЧем вам так поможет список классов в отдельном файле? В отдельном файле не обязательно, хотя фича имеет свои плюсы, а вот в отдельном месте - удобно. Когда, например, задача решается взаимодействием двух-трёх базовых классов, каждый из которых имеет наследников, крайне удобно понять общую артитектуру модуля просто открыв файл и пар раз нажав PageDown. Аналогично, когда ищешь что-то, что плохо помнишь - стартовая точка компактна и под рукой. AHTOH_LЕсли мне нужен будет список классов я посмотрю его в отдельном окне Я понимаю, что логика "если мне потребуется вторая конечность, я могу взять к мешку ещё и костыль" практически неопровержима, поэтому не собираюсь тратить время на теоретическую беседу с человеком, устриц не пробовавшим. Есть люди, например топикстартер, которым это удобно. Какой смысл приходить к ним и устраивать бучу с криком "да нафиг вам это надо!?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 18:07 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
White Owl...Я ненавижу исключения и шаблоны... Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 22:01 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
Ggg_oldизвиняюсь заранее за возможно примитивный вопрос: -в каких ЯП, кроме с++ определение класса и реализацию его методов можно делать отдельно от объявления класса. ... В любом, который поддерживает интерфейсы и классы, от интерфейсов наследуемые. Интерфейс описывает требуемое поведение в виде набора методов, а класс, наследуемый от интерфейса - просто вариант реализации интерфейса. См, например, язык D. Он, конечно, совсем не такой распространенный, как Java, но зато он "нативен" и очень приятен для изучения. И по в этом году вышла на русском книжка Андрея Александреску. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 23:26 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
kmawWhite Owl...Я ненавижу исключения и шаблоны... Почему?Исключения не удобны. Если их использовать так как предлагают в учебниках - они прячут источник проблемы. А если в каждом потенциально опасном месте вешать обработчики исключения то код превращается в сплошную обработку исключений. А в языках типа Java которые требуют обязательной обработки исключений сложно сделать игнорирование ошибки, там приходится добавлять пустой код только чтобы удовлетворить компилятор. Коды возврата намного удобнее - когда надо ловишь, когда не важно - игнорируешь. Причем ловишь их всегда именно там где ошибка произошла а не в конце метода и не за десяток шагов по стеку. А шаблоны это источник гигантских проблем для библиотек. Вчера ты написал шаблон, написал класс использующий этот шаблон, скомпилировал его, положил объектный файл в библиотеку. Сегодня ты подправил шаблон, написал второй класс использующий его и скомпилировал, тоже в библиотеку. Теперь у тебя в библиотеке лежат два класса на основе разных шаблонов с одинаковым именем. Но самая главная проблема шаблонов это то что в них реальной нужды нет. Перечисли задачи для которых шаблоны полезны? Сортировка, хранение различных списков и динамических массивов, .... и? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2012, 03:06 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
White Owl...Перечисли задачи для которых шаблоны полезны? Сортировка, хранение различных списков и динамических массивов, .... и? Любой алгоритм, который напрашивается на обобщение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2012, 03:24 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
White OwlИсключения не удобны. Если их использовать так как предлагают в учебниках - они прячут источник проблемы. А если в каждом потенциально опасном месте вешать обработчики исключения то код превращается в сплошную обработку исключений. ... Коды возврата намного удобнее - когда надо ловишь, когда не важно - игнорируешь. Причем ловишь их всегда именно там где ошибка произошла Коды ошибок и пользовательские исключения семантически эквивалентны. Любой алгоритм, который записывается с помощью одного метода, записывается и с помощью другого; вопрос лишь в том, насколько качественный код получается в том и другом случае. Можно привести примеры, когда удобнее каждый из вариантов. В принципе можно назвать реальные задачи, для которых коды ошибок окажутся в среднем удобнее, но в общей массе таких крайне мало. Причины этого следующие: 1. Точное место ошибки чаще всего неинтересно. Как правило, место ошибки интересно с точностью до некоего существенных размеров блока. Скажем, в функции записи некоего файла, содержащей кучу операций, нам совершенно неинтересно, на какой именно операции случилась ошибка "на диске нет места" - напротив, нам интересна одинаковая реакция на эту ошибку при любой операции (скажем, убрать с диска временные файлы и попробовать повторить операцию). 2. В месте ошибки часто отсутствует информация, необходимая для правильной реакции на эту ошибку. Скажем, если ошибка произошла при записи лог-файла, её можно просто игнорировать - запись логов является вспомогательной операцией и не должна мешать основной функции. Ту же самую ошибку в той же самой функции, вызванной для записи файла данных, игнорировать недопустимо. Но эта самая функция записи не имеет информации о том, какие файлы с диска можно удалить - то есть не может собственными силами корректно обработать ошибку. Таким образом, сложный код с правильной обработкой ошибок "методом кодов" нуждается в повторяющихся кусках кода после многих вызовов и требует передачи различной информации между подпрограммами и часто транзитом (через две-три подпрограммы, где она не нужна, в четвёртую). Код становится сложным, запутанным, и что самое противное - собственно основная функциональность, её код и данные, начинают тонуть в строках, связанных с обработкой ошибок. Могу сказать, когда я перестал любить коды ошибок. Это случилось ещё до появления концепции исключений, в проекте, где я по сути реализовал её доступными средствами. И где, как я в какой-то момент обратил внимание, буквально каждая вторая строка кода по всему проекту выглядела очень просто: Код: pascal 1. Ну и наконец, у кодов ошибок есть третья неприятная особенность: 3. Разработка с использованием кодов ошибок сама по себе склонна к ошибкам и требует повышенного внимания и дополнительного времени и при разработке, и при тестировании. При использовании исключений вполне можно идти методом постепенного улучшения; реализовать самые общие обработчики, а затем по мере необходимости уточнять реализацию в соответствии с реальными потребностями; риск при этом лишь в том, что некая ситуация будет обработана недостаточно хорошо. При использовании кодов ошибок правильный код надо писать везде, сразу и полностью, в противном случае программа скорее всего испортит данные и/или выдаст кривые результаты. White OwlА в языках типа Java которые требуют обязательной обработки исключений сложно сделать игнорирование ошибки, Согласен, это противно и дурацкая идея. К счастью, в Java есть RuntimeException, позволяющий писать сравнительно вменяемый код с небольшим оверхедом. White OwlА шаблоны это источник гигантских проблем для библиотек. Вчера ты написал шаблон, написал класс использующий этот шаблон, скомпилировал его, положил объектный файл в библиотеку. Сегодня ты подправил шаблон, написал второй класс использующий его и скомпилировал, тоже в библиотеку. Имхо проблема здесь не в шаблонах, а в доведении идеи раздельной компиляции до абсурда. White OwlНо самая главная проблема шаблонов это то что в них реальной нужды нет. То, в чём нет реальной нужды, будет редко использоваться на практике. Скажем, на сегодня в этой роли выступают коды ошибок. Шаблоны - инструмент, позволяющий примирить потребности в создании обобщённых алгоритмов, эффективном выполнении откомпилированной программы и написании более-менее читаемого кода. Когда в чём-то из названного нет необходимости, реальная нужда в шаблонах действительно, размывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2012, 04:02 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
Ggg_oldмлина, более грамотно было бы спросить так: что-бы определение методов класса можно было делать вне блока объявления класса. коммон лисп, делфи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2012, 09:24 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
Ggg_oldне, функци АНАЛЬНЫЕ ЯП не нужны. клиника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2012, 09:25 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
softwarer1. Точное место ошибки чаще всего неинтересно. Как правило, место ошибки интересно с точностью до некоего существенных размеров блока. Скажем, в функции записи некоего файла, содержащей кучу операций, нам совершенно неинтересно, на какой именно операции случилась ошибка "на диске нет места" - напротив, нам интересна одинаковая реакция на эту ошибку при любой операции (скажем, убрать с диска временные файлы и попробовать повторить операцию). 2. В месте ошибки часто отсутствует информация, необходимая для правильной реакции на эту ошибку. Скажем, если ошибка произошла при записи лог-файла, её можно просто игнорировать - запись логов является вспомогательной операцией и не должна мешать основной функции. Ту же самую ошибку в той же самой функции, вызванной для записи файла данных, игнорировать недопустимо. Но эта самая функция записи не имеет информации о том, какие файлы с диска можно удалить - то есть не может собственными силами корректно обработать ошибку. А тебе не кажется что ты сам себе противоречишь? Если у тебя в перемешку идут команды на запись нужного файла и на запись лога - тебе обязательно надо знать точное место ошибки. Поэтому твой первый пункт уже не играет. Что такое "правильная реакция на ошибку"? Проигнорировать ошибку лога и начать паниковать на ошибку записи полезного файла? Ну так а где ж еще знать к какому файлу относится данная функция записи, если не сразу после функции? Вот как раз исключения на подобной задаче чрезвычайно неудобны. softwarerТаким образом, сложный код с правильной обработкой ошибок "методом кодов" нуждается в повторяющихся кусках кода после многих вызовов и требует передачи различной информации между подпрограммами и часто транзитом (через две-три подпрограммы, где она не нужна, в четвёртую).Вовсе нет. Дублирования кода нет - единственное что дублируется это "if error then" А дальше либо return X для транзита родителю, либо goto error_handler_of_this_type если надо сэмулировать глобальный обработчик а-ля исключение. softwarer3. Разработка с использованием кодов ошибок сама по себе склонна к ошибкам и требует повышенного внимания и дополнительного времени и при разработке, и при тестировании. При использовании исключений вполне можно идти методом постепенного улучшения; реализовать самые общие обработчики, а затем по мере необходимости уточнять реализацию в соответствии с реальными потребностями; риск при этом лишь в том, что некая ситуация будет обработана недостаточно хорошо. При использовании кодов ошибок правильный код надо писать везде, сразу и полностью, в противном случае программа скорее всего испортит данные и/или выдаст кривые результаты.Это очень странное возражение. То есть писать плохо это хорошо, а сразу писать хорошо это плохо? мдя... softwarerWhite OwlНо самая главная проблема шаблонов это то что в них реальной нужды нет. То, в чём нет реальной нужды, будет редко использоваться на практике. Скажем, на сегодня в этой роли выступают коды ошибок. Хе-хе-хе... И это ты говоришь человеку принципиально не использующему исключения? :) softwarerШаблоны - инструмент, позволяющий примирить потребности в создании обобщённых алгоритмов, эффективном выполнении откомпилированной программы и написании более-менее читаемого кода. Когда в чём-то из названного нет необходимости, реальная нужда в шаблонах действительно, размывается.Да, да, да... обобщенные алгоритмы... Еще раз повторяю: как много таких алгоритмов ты знаешь? Я знаю только одну группу алгоритмов - управление структурами данных. Списки, деревья, массивы... и все. И ради этого придумали целый раздел языка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2012, 02:07 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
White OwlА тебе не кажется что ты сам себе противоречишь? Если у тебя в перемешку идут команды на запись нужного файла и на запись лога А тебе не кажется, что для того, чтобы придумать это возражение, тебе пришлось свести воедино два абзаца, прямо таки номерами обозначенные как совершенно разные, независимые ситуации? Отвечать на такую манипуляцию смысла нет... хочешь - подумай ещё раз, хочешь - считай, что прав. White OwlВовсе нет. Дублирования кода нет - единственное что дублируется это "if error then" Да нет, есть и весьма часто. Например, необходимость подчистить текущее состояние для продолжения работы после обработки ошибки. Например, одинаковые error_handler_of_this_type в разных подпрограммах. Но даже если дублируется лишь if error then return - оно чертовски достаёт, когда это каждая вторая строчка программы. Это dumb code. White OwlЭто очень странное возражение. То есть писать плохо это хорошо, а сразу писать хорошо это плохо? мдя... Если отбросить религиозные воззрения, то "то есть писать хорошо и легко это хорошо, а писать хорошо с большими усилиями, требованиями к внимательности и лёгкостью допущения ошибок - не столь хорошо". White OwlХе-хе-хе... И это ты говоришь человеку принципиально не использующему исключения? :) Ну я знаю много принципиально творимых глупостей. Скажем, один мой знакомый айтишник принципиально отрубает у себя javascript и flash, а всех, кто делает сайты с использованием этих инструментов, называет самое мягкое мудаками, мешающими ему полноценно пользоваться интернетом. White OwlДа, да, да... обобщенные алгоритмы... Еще раз повторяю: как много таких алгоритмов ты знаешь? Трудно сосчитать. Видишь ли, мой диплом был посвящён как раз таки системе, поддерживающей реализацию обобщённых алгоритмов (не на шаблонах). И, собственно, многие языковые средства, как старые, так и новые - например, указатели на функции и лямбда-исчисление - предназначены для решения как раз этой задачи. Соответственно, любое решение где они используются.. А учитывая, что среди прочего они используются в виртуальных функциях.. White OwlЯ знаю только одну группу алгоритмов - управление структурами данных. Назову самый что ни на есть классический пример - обобщённая функция вычисления интеграла с подстановкой конкретного метода вычисления (прямоугольников, трапеций итп). Уверен, Вы не могли о нём не слышать. А так.... тысячи их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2012, 02:37 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
softwarerWhite OwlЯ знаю только одну группу алгоритмов - управление структурами данных. Назову самый что ни на есть классический пример - обобщённая функция вычисления интеграла с подстановкой конкретного метода вычисления (прямоугольников, трапеций итп). Уверен, Вы не могли о нём не слышать. А так.... тысячи их.Шаблоны предполагают что у человека есть тысячи примитивных типов данных и все они подлежат одному общему алгоритму. Какие типы данных ты используешь для вычисления интеграла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2012, 20:28 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
Java :) Интерфейсы - отдельно, реализация в классе - отдельно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 15:25 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
White OwlШаблоны предполагают что у человека есть тысячи примитивных типов данных...вот это вот с чего взято? с потолка? достаточно 2х типов, у которых одинаковый интерфейс, но нет общей иерархии наследования, чтобы написать шаблон, вместо двукратного написания одного и того же кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 15:36 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
White OwlКакие типы данных ты используешь для вычисления интеграла? Абстрактные :) Шаблоны позволяют эффективно наплодить семейство решателей для вычисления простых, криволинейных, поверхностных интегралов от действительных или комплексных переменных, разными методами, дающими разную скорость-точность, и при этом не потерять в эффективности каждого отдельного "решателя". Раз Вам не нравятся шаблоны - Вы можете либо предложить лучшее решение, либо пожертвовать одним из названных преимуществ, либо не решать таких задач. Имхо всё просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 15:41 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
egorychдостаточно 2х типов, у которых одинаковый интерфейс, С учётом шаблонных функций в общем-то иногда можно и без одинакового интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 15:45 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
softwareregorychдостаточно 2х типов, у которых одинаковый интерфейс, С учётом шаблонных функций в общем-то иногда можно и без одинакового интерфейса.несомненно )) иногда можно и без типов, даже, констант достаточно иногда бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 15:53 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
egorychWhite OwlШаблоны предполагают что у человека есть тысячи примитивных типов данных...вот это вот с чего взято? с потолка? достаточно 2х типов, у которых одинаковый интерфейс, но нет общей иерархии наследования, чтобы написать шаблон, вместо двукратного написания одного и того же кода.Ради двух типов я не стал бы возиться с универсальным интерфейсом. Даже ради пяти не стал бы. Если у меня есть конечное число типов подлежащих одинаковому интерфейсу это всегда либо потомки одного общего предка, либо интерфейсы для них "не совсем одинаковые" и написание пусть и десятка копий похожих (но уникальных) интерфейсов всегда дадут выигрыш против одного общего универсального. Вот с неизвестным количеством типов - там да, там действительно имеет смысл задуматься о шаблонах. Но тогда мы возвращаемся к моему первому возражению: мало на свете задач действительно способных обрабатывать неизвестное количество типов. softwarerWhite OwlКакие типы данных ты используешь для вычисления интеграла?Абстрактные :) Шаблоны позволяют эффективно наплодить семейство решателей для вычисления простых, криволинейных, поверхностных интегралов от действительных или комплексных переменных, разными методами, дающими разную скорость-точность, и при этом не потерять в эффективности каждого отдельного "решателя". Раз Вам не нравятся шаблоны - Вы можете либо предложить лучшее решение, либо пожертвовать одним из названных преимуществ, либо не решать таких задач. Имхо всё просто.Вот это как раз тот случай, когда лично я бы наплодил бы несколько уникальных "решателей" для каждого из типов. Потому что этих типов очень малое число - действительные и комплексные. И я на 100% уверен что функция какого-нибудь расчета выиграла бы в скорости если бы ее писали конкретно для действительных или для комплексных чисел, а не делали универсальную функцию для обоих типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 19:55 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
White OwlВот это как раз тот случай, когда лично я бы наплодил бы несколько уникальных "решателей" для каждого из типов. Потому что этих типов очень малое число - действительные и комплексные. И я на 100% уверен что .... Позволю себе спросить - а каков вообще Ваш опыт с шаблонами (не генериками)? Просто, честно говоря, по разговору складывается ощущение, что Вы плохо представляете себе их возможности и применение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 20:05 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
softwarerWhite OwlВот это как раз тот случай, когда лично я бы наплодил бы несколько уникальных "решателей" для каждого из типов. Потому что этих типов очень малое число - действительные и комплексные. И я на 100% уверен что .... Позволю себе спросить - а каков вообще Ваш опыт с шаблонами (не генериками)? Просто, честно говоря, по разговору складывается ощущение, что Вы плохо представляете себе их возможности и применение.Ну если так ставить вопрос, то маленький. Сам, по собственной инициативе, я их сочинять не буду, как я уже не однократно говорил, у меня нету задач в которых применение шаблонов было бы оправдано. И до сих пор никто не смог показать мне такие задачи (ну кроме классических list/vector/etc). Использовать чужие шаблоны приходилось, но во всех случаях (кроме библиотечных list/vector/etc) это либо приносило проблемы, либо шаблон ограничивался одним единственным наследником на все время существования библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 20:19 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
Ggg_oldизвиняюсь заранее за возможно примитивный вопрос: -в каких ЯП, кроме с++ определение класса и реализацию его методов можно делать отдельно от объявления класса. подыскиваю какой-нибудь гибкия простой язычек, глядел вот на руби, но увидел, что там код метода идет внутри листинга класса. Попыитался вспомнить, а где можно как в с++ и не смог. Заранее спасибо. Why CORBA is DEAD? Objective-C? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 23:07 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
читаю доки по АДА, супер! не знаю, буду ли ее использовать реально, но сам язык очень нравится, изучаю с доки удовольствием, в отличие от всяких пионерских велосипедов типа скалы и прочего. Почему АДА не в большом мейнстриме понимаю - пионеров не пускали (обязательная жесткая стандартизация) и высокая цена компиляторов отсеивала энтузиастов. Но то что вышло в итоге - прекрасно. Это первичное эмоциональное впечатление, но чувство удовлетворения и понимание, что АДА - следствие развития программирование как науки а не коммерческого однодневного велосипедостроя. Как там с библиотеками - не знаю, но с эстетической точки зрения - этот ЯП идеал (имхо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 13:05 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
Можете ли вы назвать еще такой язык, который дает возможность записывать условие в одной процедуре, а оператор IF — в другой? (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 00:28 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
ЖуК_БотаН, любой нормальный язык, или вы про что то другое: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 08:15 |
|
||
|
в каких ЯП можно
|
|||
|---|---|---|---|
|
#18+
AHTOH_LЖуК_БотаН, любой нормальный язык, или вы про что то другое: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. про что-то другое. в вашем случае в процедуре тест условие таки записано "MyF()". з.ы. велосипед не мой, я только разместил объяву. з.ы.ы. а язык такой есть, фортом зовется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 17:44 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38057002&tid=1341999]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 434ms |

| 0 / 0 |
