All streams
Search
Write a publication
Pull to refresh
29
0
Анатолий Коперин @exmachine

Разработчик C#, Администратор баз данных

Send message
Прошу прощения, вклинюсь.

Я обычно для этих целей использую субрепозитории в Mercurial или Git.
Каждая подключаемая библиотека вервионируется в своем репо, который подключается к проекту- потребителю.
Смена версии библиотеки, при этом, это отдельный коммит с тестированием.
Интересно, возможно сделать токопроводящий кубик лего?
Примерно тоже самое habrahabr.ru/post/93263, но не ставилась задача автоматического определения размеров кэшей.
Маленький шаг для одной страны…
Было бы не плохо исходники тестов опубликовать.
По видимому систему придется отключать в сложных метеоусловиях или при загруженности дорог, но этот прототип по качеству уже достаточен для коммерческой реализации в качестве видеорегистратора например. Можно подмаргивать светодиодом и попискивать при уходе с полосы.

Для определения того, что водитель действительно хочет перестроиться достаточно должно быть включенных поворотников. И это кстати, хороший способ ненавязчиво напомнить о том, что их надо включать. ;)

Кроме того, как себя помню, все это должно хорошо помогать начинающим водителям.

Спасибо за исходники. Попробую и себе делать…
Перепутаны. Благодарю. Поправил. 8-)
Спасибо! Появился повод все еще раз перепроверить. Но ошибки не обнаружил.
Вот такой код на моей машине выполняется примерно 10 секунд (визуально и по системным часам).
Код замера интервала времени выполнения эквивалентен опубликованному.
Код логирования будет работать чуть быстрее чем в NLog за счет статических членов.

using System;
using System.Diagnostics;
namespace LogBenchmark
{
    class Program
    {
        private static volatile bool _showLog = true;
        static void Main(string[] args)
        {
            _showLog = false;
            Console.WriteLine("Frequency:{0}", Stopwatch.Frequency);
            int R = 1000000000;
            DateTime begin = DateTime.UtcNow;
            long none = Measure(None, R);
            long p3 = Measure(NCh_P3, R);
            Console.WriteLine("Elapsed: {0}", DateTime.UtcNow - begin);
 
            Console.WriteLine("None total:{0} ticks", none);
            Console.WriteLine("N3_1 total:{0}  ticks", p3);
 
            Console.WriteLine("None total:{0} s"(double)none / Stopwatch.Frequency);
            Console.WriteLine("N3_1 total:{0} s"(double)p3 / Stopwatch.Frequency);
 
            Console.WriteLine("None operation:{0} s"(double)none / Stopwatch.Frequency / R);
            Console.WriteLine("N3_1 operation:{0} s"(double)p3 / Stopwatch.Frequency / R);
        }
 
        static void None(int a1)
        {
        }
 
        public static long Measure(Action<int> action, int repeats)
        {
            action(0);
 
            long start = Stopwatch.GetTimestamp();
            for (int j = 0; j < repeats; j++)
                action(j);
            return Stopwatch.GetTimestamp() - start;
        }
 
        internal static void NCh_P3(int a1)
        {
            Debug("Test message: {0} {1} {2}", a1, a1, a1);
        }
 
        internal static void Debug(string frm, int a1, int a2, int a3)
        {
            if(_showLog)
                Console.WriteLine(frm, a1, a2, a3);
        }
    }
}
Спасибо, но не обижаюсь.
Продолжу, аналогию с велосипедом. Прежде чем разгоняться до любой скорости, следует подумать: успеваем ли рулить, как будем останавливаться.
Так задача не вывести поток сообщений, а доблестно их игнорировать! ;)
И вывод как раз в том, что столько все равно не обработаешь.
О! Еще статья на Мембране, на тему питания «бортовой» электроники, за счет самого жука
«по-моему, информация об этом проекте тоже публиковалась на Хабре»
Ну поиск же есть! Вот эта статья.

Но вообще, на Хабре удивление мало написано. А интересных подробностей по теме много…

На Мембране можно почитать описание «прорыва» технологии.

На Noname'е интересна более общая статья про сам процесс исследования.
Хабрачеловеки! С наступающим!

А теперь мигом к семье! Завтра отпишетесь. :-D
Спасибо за дополнение.
«сбор статистики вашего приложения» — так понял, имели ввиду профилирование (profiling), т.е. контроль производительности.

Я для этих целей, настраиваю вывод лога в CSV. Загружаю его в Calc (Excel). Настраиваю фильтры на интересующую операцию. Далее, добавляю колонку, которая вычисляет разницу времени вывода сообщения.

Дальше, по обстоятельствам. Но обычно, можно отыскать в каком окружении код начинает резко медленнее работать.
Собственно она там и есть. Я ссылку на исходный код класса привел.
Необоснованно пока, но предположу, что данном случае методы должны подставляться при jit-копиляции. (что тоже упомянуто)
Поэтому, предпроверка просто бессмысленна.

Но все же, пока не дописал бенчмарки, развивать бы эту тему не стал.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity