- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
class DllContainer
{
DllContainer()
{
// тут грузятся дллки в количестве N.
// LoadLibrary() + некоторые операции
}
~DllContainer()
{
// FreeLibrary() и т.п.
}
template <class T>
T* GetComponent(ComponentID id)
{
// аналог QueryInterface.
// ищет компонент, проверяет можно ли статик_кастить
// и вертает указатель нужного типа
}
};
class ComponentUser
{
void Method1()
{
DllContainer loader;
SomethingDoer* comp = loader.GetComponent<SomethingDoer>(ID1);
comp->DoSomething();
}
void Method2()
{
DllContainer loader;
SomethingElseDoer* comp = loader.GetComponent<SomethingElseDoer>(ID2);
comp->DoSomethingElse();
}
void MethodN()
{
DllContainer loader;
ShitPerformer* comp = loader.GetComponent<ShitPerformer>(IDN);
comp->PerformSomeShit();
}
};
недавно обнаружил код примерно такого плана.
крупный коммерческий проект...
Говногость 12.05.2010 18:07 # 0
>проверяет можно ли статик_кастить
А это как?
g26g 12.05.2010 18:25 # 0
> проверяет можно ли статик_кастить
> А это как?
свой ртти.
но говнокод вовсе не в этом :)
Говногость 12.05.2010 19:19 # 0
Тогда может и статик кастом нельзя? Выравнивание поменяется или размеры типов...
g26g 13.05.2010 09:10 # 0
Говногость 14.05.2010 13:44 # 0
g26g 17.05.2010 13:01 # 0
del 12.05.2010 18:49 # 0
Мощно.
Говногость 12.05.2010 19:20 # 0
Всё равно они кэшируются в системе, так что без разницы, но ГК.
pushkoff 12.05.2010 22:27 # −1
Говногость 14.05.2010 13:46 # +1
cfdev 12.05.2010 19:12 # +1
> и вертает
Оседелець детектед
pushkoff 12.05.2010 22:38 # −1
cfdev 12.05.2010 22:42 # +1
с чего бы это? потому что во всех дырках с++? вот раньше во всех дырках фортран и кобол были. где они теперь?
> в казуальном и инди у него пока сомнительные преимущества
почему сомнительные? как раз прекрасные. в инди ведь главное - логика (а не суперспецэффекты), а С# прекрасен для написании логики. в с++ много отвлекаешься на всякую постороннюю хрень.
pushkoff 12.05.2010 22:46 # −1
в С++ ни на что не отвлекаешься, при должном подходе в нем есть все плюшки С#...
cfdev 12.05.2010 22:58 # +2
Однако чтобы должным образом Луа прикрутить, нужно поебаться (видимо, без этого с++ не мыслят жизни). А в C# уже сразу садись и делай.
> при должном подходе в нем есть все плюшки С#...
При должном подходе можно писать объектно-ориентированно и даже компонентно-ориентированно и даже функционально на си. только вот всё это время будешь чувствовать себя пидарасом.
pushkoff 12.05.2010 23:12 # −1
Хватит уже впихивать невпихуемое... в моих платформах нет свопа и гектаров памяти...
у меня верхний лимит 30 мб/30 фпс... что может мне предложить С#?
а если копнуть дальше то:
PSP - 32-64mb
iPhone - 128mb, для пользователя только 30mb (24 по требованиям эпла)
PS3 - 256mb
XBOX360 - 512mb
сори, но не все пишут никому ненужные приложения для никому не нужных серверов...
давай закончим этот спор...
cfdev 12.05.2010 23:26 # 0
то же самое
pushkoff 12.05.2010 23:28 # −1
cfdev 12.05.2010 23:34 # 0
xna для xbox майкрософтовцы видимо в холодном бреду написали?
особо производительные места никто не мешает реализовать на си и вызывать через p/invoke (хотя мало когда надо). тогда всё будет упираться в память. но с памятью у сишарпа не так плохо. просто какбэ некоторые радуются тому, что сборщик мусора, и давай строгать объекты направо-налево. можно так не делать и памяти будет вдостаток.
я уже говорил, можно конфигурировать моно (стрипнуть при компиляции лишнее), чтобы влезало в 4 мб по памяти.
pushkoff 12.05.2010 23:38 # −1
cfdev 14.05.2010 15:45 # 0
тебе сколько повторять, что моно заводится под: иксбокс, пс3, виндовс, линукс, макос, айфон и ещё что-то.
Слышал про Unity3d? Там используется мона (для логики). В симс3 используется моно для логики.
Один хрен в языках подобного уровня любая 3д-библиотека это враппер вокруг сишного функционала, так что большей трагедии нет, что графика рисуется не самой моной (хотя подвижки есть, напр. Mono.SIMD).
Говногость 14.05.2010 15:51 # 0
pushkoff 14.05.2010 15:53 # −1
... для логики...
для логики вполне хватает и LUA без JIT... так как она в худшем случае есть 10% фреймтайма... и этот показатель можно смело менять в довольно широких пределах, вызывая скриптовую часть реже чем каждый фрейм...
cfdev 14.05.2010 16:35 # +1
и под логикой я понимаю нечто большее, чем скриптики-триггеры
pushkoff 14.05.2010 17:02 # 0
и при этом нет ААА тайтлов написанных на шарпе...
pushkoff 12.05.2010 23:41 # −1
С# для этого и создавался... если начать думать (а предел у этих мыслей все равно есть, и он сильно отличается от результата этих же мыслей на С++), то лучше было сразу выбрать язык который даст пользу от этих размышлений...
Говногость 13.05.2010 03:39 # +1
Сборщик мусора?
Аббревиатура из двух букв, но обе из разных языков. :)
pushkoff 13.05.2010 14:23 # 0
g26g 13.05.2010 09:18 # 0
ужасы какие говорите :)
кстати, shared_ptr<> уже разве в стандарте? насколько я помню, он только до tr1 продвинулся.
pushkoff 13.05.2010 14:27 # 0
Говногость 14.05.2010 13:50 # 0
shared_ptr использует подсчёт ссылок. Храняться кол-во ссылок на объект в указываемом объекте или где-то в отдельном map? Или ещё как-то?
pushkoff 14.05.2010 14:55 # 0
Говногость 14.05.2010 15:26 # 0
Если мапы использует, то это конечно плохо, медленно...
pushkoff 14.05.2010 15:50 # 0
g26g 17.05.2010 13:05 # 0
работает медленнее интрузива, но универсальнее сам по себе. обычно на общий перфоманс приложения операции с шареными указателями влияют слабо.
Говногость 13.05.2010 03:36 # 0
Вы хотели static DllContainer loader;?
Вынести его, например как Синглтон ввиде одного экземпляра. Зачем их 5000т штук.
g26g 13.05.2010 09:15 # 0
думали об этом :) пока не решились.
> Оседелець детектед
упс, мимо :)
OlegYch 12.05.2010 20:11 # 0
OlegYch 12.05.2010 20:13 # 0
не уверен правда что ето на что-то влияет
Говногость 12.05.2010 20:15 # 0
КО занят. Пришлось ответить мне.
g26g 13.05.2010 09:12 # 0
Говногость 14.05.2010 13:52 # 0
Да. Он в не корректном использовании кросс-модульной передачи интерфейсов.
Говногость 14.05.2010 13:54 # 0
g26g 17.05.2010 13:05 # 0
Говногость 12.05.2010 20:17 # 0
g26g 13.05.2010 09:14 # 0
T - интерфейс.
Говногость 14.05.2010 13:55 # 0
g26g 17.05.2010 13:12 # 0
cfdev 12.05.2010 22:12 # +2
видимо
> ShitPerformer