Здравствуйте, ironwit, Вы писали:
I>Я все еще жду кроссплатформенный янус в котором будет фич побольше чем в текущем и вносится они будут побыстрее
Ну а чтоже ты... http://sheridan.stavcom.ru/wiki/index.php?n=Main.HomePage
Вливайся может что подскажеж...
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, ironwit, Вы писали:
I>>Я все еще жду кроссплатформенный янус в котором будет фич побольше чем в текущем и вносится они будут побыстрее S>Ну а чтоже ты... S>http://sheridan.stavcom.ru/wiki/index.php?n=Main.HomePage S>Вливайся может что подскажеж...
там слова rsdn нет прокси не пустит
Здравствуйте, Cyberax, Вы писали:
>> C>Нет эффективного способа передачи value-типов по ссылке. >> void Foo(ref SomeValueType vt) >> { >> } C>См. выделенное.
>> Ы? C>Происходит боксирование типа -> аллокация на куче (нет, JIT его не C>оптимизирует).
Смотри выделенное — не смотри, а никакого боксинга в данном случае не происходит — факт.
>> C>Ну и по мелочам напрягала невозможность наследования и реализации >> интерфейсов (на незабоксированых типах) — приходилось писать один и тот >> же код несколько раз для разных типов. >> void Foo<T>(ref T vt) >> where T : ISomeInterface >> { >> } >> Ы? C>См. выделенное.
Здесь — тем более. Я сам проводил замеры и неоднократно. Никакого боксинга и в этом случае не происходит. Причем JIT зачастую инлайнит вызываемый метод, так что по сравнению с вызовом интерфейсного метода выигрыш может быть десятикратным.
>> Или был первый фреймворк? C>Первый, потом стал второй. Разницы особой нет.
FW 1.1 и FW 2.0 — небо и земля. Лично у меня обратное утверждение автоматически вызывает сомнение в компетентности того, кто, собственно, обратное и утверждает. В данном вопросе, разумеется.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
WolfHound wrote: > Где здесь боксинг?
Торможу, немного другое имел в виду.
Ладно, вот реальная ситуация:
Стандартный способ задания сеток в трехмерных программах — массив вершин
и массив треугольников. Для алгоритма обработки еще нужно иметь
информацию о соседях каждого треугольника.
Теперь, как нам это портировать на C#? vector3 и vertex, понятно,
становится val-типами. Но как представить треугольник, не делая его классом?
Мы сделали примерно так:
struct Triangle
{
public long point1,point2,point3;
public long tri1,tri2,tri3;
};
При этом point1,point2... становятся индексами, а не указателями. Но не
все точки и треугольники лежат в одном массиве, так что в старшем байте
индекса кодируется еще и индекс массива.
WolfHound wrote: > А почему long? Разве у вас есть массивы в которых больше int.MaxValue > элементов? Сомневаюсь.
Один байт нужен для индекса массива. И 3 остающихся байт уже совсем
недостаточно.
Размеры, кстати, на некоторых тестах уже подбираются к половине
миллиарда. Так что граница int'а уже не за горами.
> И какой смысл в нескольких массивах вертексов?
Есть изначальный массив вершин (сэмпл размером 10000х10000).
В процессе обработки создаются промежуточные вершины и треугольники. В
исходный массив их пихать нельзя, поэтому они кладутся во временные
массивы. Поэтому и невозможно обойтись единым индексом.
Здравствуйте, Cyberax, Вы писали:
C>Один байт нужен для индекса массива. И 3 остающихся байт уже совсем недостаточно.
А почему тогда не так:
struct Triangle
{
public int point1,point2,point3;
public int tri1,tri2,tri3;
public byte point1_arr,point2_arr,point3_arr;
public byte tri1_arr,tri2_arr,tri3_arr;
};
Ы?
Вот мы и сэкономили по 3 байта на индекс.
Итого: 3 * 6 — 2(на выравнивание) = 16 байт экономии на структуру
C>Размеры, кстати, на некоторых тестах уже подбираются к половине миллиарда. Так что граница int'а уже не за горами.
Если перейти границу int то тут уж точно без 64х битной архитектуры не обойтись.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WolfHound wrote: > C>Один байт нужен для индекса массива. И 3 остающихся байт уже совсем > недостаточно. > А почему тогда не так: > struct Triangle > { > public int point1,point2,point3; > public int tri1,tri2,tri3; > public byte point1_arr,point2_arr,point3_arr; > public byte tri1_arr,tri2_arr,tri3_arr; > }; > Ы?
Не подумали Хотя мне кажется, что сильно больших улучшений не даст.
> C>Размеры, кстати, на некоторых тестах уже подбираются к половине > миллиарда. Так что граница int'а уже не за горами. > Если перейти границу int то тут уж точно без 64х битной архитектуры не > обойтись.
В 4Гб оно уже не вмешается на C# при больших сэмплах — так что 64 бита
уже в requirements'ах. Версия на С++ намного более эффективна, кстати.
Здравствуйте, Sheridan, Вы писали:
S>Засел я тут на выходных попробовать в кутэ попрограммить... S>Довольно понравилось... Интерфейс руками накидать — как 2 пальца, отослать чтото из потока кудато еще — как 2 пальца... Технология сигнал-слот вообще супер! Практически все что надо охватывается функциями самой Qt, а это уже реальная кроссплатформенность. В общем мне понравился кутэ. Welcome...
Здравствуйте, Вертер, Вы писали:
В>1. может быть дырка между адресами L_0000 и L_0005 так как команда ldstr не занимает 5 байт
Ну да, конечно. однобайтовый опкод + 4-байтный токен строки ну никак не равен 5 В>2. может быть вместо stloc.0 должно быть stloc.1
Для статического метода не может
Здравствуйте, Mace Windu, Вы писали:
MW>Здравствуйте, Вертер, Вы писали:
В>>1. может быть дырка между адресами L_0000 и L_0005 так как команда ldstr не занимает 5 байт MW>Ну да, конечно. однобайтовый опкод + 4-байтный токен строки ну никак не равен 5 В>>2. может быть вместо stloc.0 должно быть stloc.1 MW>Для статического метода не может
хм, а почему же -1 то?
Сам же писал, что:
L>Найдешь проблему — поставлю 3 балла.
про остальное — ни слова
В ответ на реплику, я написал: «совсем не селён в IL асме, а тем более в дотНЕТе». Реакция на мою попытку непонятна, ну да ладно...
Здравствуйте, Sheridan, Вы писали:
S>Засел я тут на выходных попробовать в кутэ попрограммить... S>Довольно понравилось... Интерфейс руками накидать — как 2 пальца, отослать чтото из потока кудато еще — как 2 пальца... Технология сигнал-слот вообще супер! Практически все что надо охватывается функциями самой Qt, а это уже реальная кроссплатформенность. В общем мне понравился кутэ. Welcome...
Windows Forms для .NET
Qt для C++
Каждому свое. Иначе давайте обсуждать http vs ftp или что-нибудь в этом духе
Здравствуйте, Sheridan, Вы писали:
С>>>RSDN@Home падал меньше, лучше всего работала АТИ-шная приблуда. WH>>Кстати RSDN@Home лучшее доказательство того что .NET таки рулит ибо WH>>1)До сих пор нет аналога на С++ S>Проект стартовал и неспеша крутится.
Че-то не открывается.