Здравствуйте, Шахтер, Вы писали:
AVK>>Ну и что в этом хорошего? Вот оказалось к примеру что сцинтилла не юникодная, а чтобы переделать ее на уникод надо перелопатить гору кода. ВОт тебе и результат криворукости.
Ш>Я не говорю, что это хорошо. Тем более стимул сделать по своему и хорошо.
Не батенька, изобретение велосипедов мы уже проходили.
Ш>И дать образец хорошего программирования.
Денег за образец заплатишь?
AVK>>Чего это?
Ш>Возможность перемещать курсор вдоль строки в любую позицию.
В янусе без надобности.
AVK>>ПОка что все запросы она покрывает с лихвой.
Ш>Не покрывает. Код писать на ней очень неудобно.
Здравствуйте, VladD2, Вы писали: VD>И какие же проблемы?
Да известная проблема с тем, что сцинтилла думает, что таб=2 спейса, и еще имеет наглость при автоинденте делать смарт таб. А эксплорер (каковой, собсно, используется в качестве основного браузера результата) думает, что таб=4 спейса. И мы имеем WYSINWYG. Единственный способ — готовить текст там, где либо нет такого умного автоиндентирования, либо таб=4 спейса. А потом пейстить в жанусь.
... << RSDN@Home 1.1.2 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Да известная проблема с тем, что сцинтилла думает, что таб=2 спейса, и еще имеет наглость при автоинденте делать смарт таб.
А ты уверен, что это Синтила? Может это просто у нас не сделана настройка? Не думаю, что синтила не имеет подобной настройки.
S> А эксплорер (каковой, собсно, используется в качестве основного браузера результата) думает, что таб=4 спейса.
А тут вообще нужно бы в пробелы заменять, как на сайте в статьях (если не ошибаюсь).
S> И мы имеем WYSINWYG. Единственный способ — готовить текст там, где либо нет такого умного автоиндентирования, либо таб=4 спейса. А потом пейстить в жанусь.
Ну, или писать все в одном месте (в той же Синтиле). Тогда индент будет одинаковым.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Sinclair, Вы писали:
S>>Да известная проблема с тем, что сцинтилла думает, что таб=2 спейса, и еще имеет наглость при автоинденте делать смарт таб.
VD>А ты уверен, что это Синтила? Может это просто у нас не сделана настройка? Не думаю, что синтила не имеет подобной настройки.
Неа, не уверен. Скорее всего, нет какой-то настройки. VD>А тут вообще нужно бы в пробелы заменять, как на сайте в статьях (если не ошибаюсь).
Мысль сия не лишена.
VD>Ну, или писать все в одном месте (в той же Синтиле). Тогда индент будет одинаковым.
НЕТ! Не будет одинакового индента. Re[8]: tab при вводе сообщений. Хочу фичу
Здравствуйте, lkj, Вы писали:
lkj>Попробовал скомпилировать C++ проект для .NET (MSVС++ 7.1) и заметил, что вызов виртуальной функции выполняется примерно 700 тактов. lkj>Можно это как-нибудь ускорить?
Здравствуйте, Шахтер, Вы писали:
Ш>Тут надо понимать одну вещь. Человеческий мозг -- гораздо более мощное орудие, чем любой компилятор. Поэтому попытка избавиться от необходимости думать, спихивая свою работу тупой машине, контрпродуктивна.
Если уж приводить аналогию с человеческим мозгом, то не следует забывать того, что мозг тоже "спихивает" свою работу "тупой машине" (рефлексы, моторика, подсознание, интуиция и т.д.).
Здравствуйте, VladD2, Вы писали:
M>>По моим очень дилетантским прикидкам, метапрограммирование компиляторов это вопрос, которому нужна серьёзная теоретическая проработка. Ну уровне какой-нибудь докторской диссертации или круче. Народной инициативой тут, никак не обойдёшься.
VD>А я еще ни разу не видел чтобы в жизнь нкую идею воплтил доктор. Обычно они теорию толкают, а реализацию делают простые смертные (инженеры, программисты). Теоритически все уже довольно ясно. Есть даже некоторые реализации (OpenC++, например). Так что...
Здравствуйте, VladD2, Вы писали:
VD>А я еще ни разу не видел чтобы в жизнь нкую идею воплтил доктор.
Дык вроде C with classes Страуструпом реализован. Или он тогда ещё не был доктором и писал как раз для своего диссера?
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius — and a lot of courage — to move in the opposite direction. -- Albert Einstein
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, lkj, Вы писали:
lkj>>Попробовал скомпилировать C++ проект для .NET (MSVС++ 7.1) и заметил, что вызов виртуальной функции выполняется примерно 700 тактов. lkj>>Можно это как-нибудь ускорить?
L>Какой вызов? Первый?
Нет. Делаю в цикле:
struct I1 { virtual int f1(int t) = 0; };
struct C1: public I1 { virtual int f1(int t) { return t; } };
int g1(I1 *i1)
{
int s = 0;
for (int i = 0; i < 10000000; i++)
s += i1->f1(i);
return s;
}
int main()
{
C1 c1;
return g1(&c1);
}
Выполняется раз в 100 медленнее варианта на чистом C++ или на C#.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, lkj, Вы писали:
lkj>>Выполняется раз в 100 медленнее варианта на чистом C++ или на C#.
L>И где здесь замеры? Или ты и вермя загрузки программы сюда плюсуешь?
Замеры внешней программой.
Исполняется 7 секунд на 1 GHz CPU.
на обычном C++ исполняется за сотые доли.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, lkj, Вы писали:
lkj>>Замеры внешней программой. lkj>>Исполняется 7 секунд на 1 GHz CPU. lkj>>на обычном C++ исполняется за сотые доли.
L>Некорректный замер. Ты измерил не скорость управляемого кода, а скорость загрузки рантайма. Вынеси замер в код тогда и сравнивай.
Итераций много. Накладные расходы не должны влиять.
В чем некорректность?
Как быстро могут выполняться вызовы виртуальных функций в программе на С++ для .NET?
И почему мой пример работает так медленно?
Здравствуйте, lkj, Вы писали:
L>>Некорректный замер. Ты измерил не скорость управляемого кода, а скорость загрузки рантайма. Вынеси замер в код тогда и сравнивай.
lkj>Итераций много. Накладные расходы не должны влиять. lkj>В чем некорректность? lkj>Как быстро могут выполняться вызовы виртуальных функций в программе на С++ для .NET? lkj>И почему мой пример работает так медленно?
Во-первых большой оверхед на загрузке нетовского рантайма.
Во-вторых первый вызов подпрограммы в управляемом коде приводит к компиляции.
В-третьих не факт, что компилятор в C++ не заменил прямой f1 вызов на прямой (не виртуальный). Он видит, что наследников больше нет и вправе это сделать. Если сделал, то кроме того мог еще и заинлайнить этот вызов, а заодно и вызов g1. Тогда и получаем, что имеем программу типа int s = 0; for (int i = 0; i < 10000000; i++)s += i; В принцыпе этот цикл можно развернуть. А развернув, обнаруживаем, что результат можно свести к int s = <что-то там>; Тут он обнаруживает, что s никто не ипользует и выбрасывает его нафик. Так что в итоге пришли к тому, что оптимизатором тело main-а может быть сведено на нет. Т.о. получаем, что ты сравниваешь время загрузки операционной системой ничего не делающей программы и время работы .net-программы.