C, Embedded and Linux в Self-Emplyed
  • Интересная задачка (С/C++)

    Потому я очень удивлён отсутствию в современных процах железно реализованных таблиц умножения. В железе реализовать таблицу достаточно просто.

    ты не там смотрел. По моей информации целочисленное умножение таблицами 8×8 и 16×16 — норма. В ЦСП АД об этом тупо в даташитах написано. В других процессорах тоже используется но подробностей не помню.

    Поддержал: Олексій Пєніє
  • Интересная задачка (С/C++)

    1 table      : 3938423
    2 tables     : 7153231
    6 bit table  : 8266133
    Linear scale : 1943639
    Float scale  : 6071799
    Double scale : 11392550
    

    i7-7820HQ CPU @ 2.90GHz

    Поддержал: Denys Poltorak
  • Чек-лист для подготовки к собеседованию на английском

    он не утвержденный, скорее там построено на частотной зависимости, как правило там от книги к книге пересечение процентов 80.
    в этом плане я вполне доверяю экспертизу людям, которые занимаются составлением подготовительного материала уже лет 10+, редкоиспользуемое само отлетит.

    Личный свеженький пример. Недавно мне попался частотный словарь разговорного американского английского. Из топ-60 слов 5 слов я никогда не встречал ни в одном учебнике. Это к тому что «иксперды» являются экспертами только в своем, далеком от реальности мире.

    Поддержали: Punk Floyd, K Vadym
  • Чек-лист для подготовки к собеседованию на английском

    А ще хочеться тапком бити вчителів, що приходили на заміну на уроках англійської. Один нам втирав, що ship говориться як «шіп», а sheep — «шіііііііп».

    Бельевым шнуром сложенным вчетверо ...

  • Чек-лист для подготовки к собеседованию на английском

    в этом плане я вполне доверяю экспертизу людям, которые занимаются составлением подготовительного материала уже лет 10+, редкоиспользуемое само отлетит. возвращаясь к тому самому «редкому» arduous — читал тезис на днях по комп. саенс, человек активно его употреблял.

    Как показал опыт — хочеш чтобы было хорошо — сделай сам. Афттар статьи отличная иллюстрация.

  • Интересная задачка (С/C++)

    Майк в своих экспериментах тупо запретил вытиснение

    Поддержал: Vlad Stelmahovsky
  • Чек-лист для подготовки к собеседованию на английском

    Ты не чувствуешь разницы между произношением королевы и RP? Ближайшим к произношению королевы является кокни. RP это то что слышно на старых видосиках от Би-Би-Си.

  • Интересная задачка (С/C++)

    Например, если чтение из памяти — это единственная команда чтения на 3-4 остальные команды в коде, то к моменту выполнения команды чтения данные будут уже загружены из кеша, что будет 1 или 0.5 такта.

    Я понимаю что доступ к кешу быстр, но не могу понять как он может быть настолько быстр, при косвенной адресации. Как это может быть при прямой — это очевидно.

    Поддержал: De Money
  • Интересная задачка (С/C++)

    Попробуйте написать собственную реализацию? Лучшее что у меня получилось — 4-ре инструкции на операцию, но переплюнуть заоптимизированное обращение к таблице у меня не получилось, пока-что непонятно почему.

  • Чек-лист для подготовки к собеседованию на английском

    Кстати, а что плохого в произношении как у Королевы? Ну кроме то что не соответствует социальному положению?

  • Чек-лист для подготовки к собеседованию на английском

    Pronunciation — многие забивают на произношение, но это зря. В английском есть множество слов, которые пишутся одинаково, но читаются по-разному:

    Аффтар, судя по тому что вы написали в статье, вы лично, тоже забили на произношение.

  • Интересная задачка (С/C++)

    я тут вычитал что такая вещь как __builtin_unreachable() влияет на то как компилятор оптимизирует switch(). Насколько я понял поддерживается как гцц так и шлангом. Насколько я понял то ее нужно добавить в ветку default в обсуждаемом свиче.

  • Выбор ноутбука для программирования

    Я бы непереводил время. HP не умеет делать ноутбуки.

  • Интересная задачка (С/C++)

    Ок, а что ты думаешь на тему вот такой немного грязноватой оптимизации?

    Суть в том что предыдущий код компилился в 6 инструкций, одна из которых условный переход. Этот имеет шансы скомпилится в 4-ре, причем без ветвлений.

    #define clamp(x) \
    do { \
        x = ( x < 0 ) ? 0 : x; \
        x = ( x > 255 ) ? 255 : x; \
    } while(0)
    
    
    unsigned char clamp2(int val)
    {
        clamp(val);
    
        return val;
    }
    
  • Интересная задачка (С/C++)

    По тестам получается самое быстрое решение и этому есть объяснение.

    Это возможно только в одном случае — компилятор смог избавится от взятия индекса в рантайме, пользуясь фактом что у нас массив констант. Интересно было было бы посмотреть листинг.

    Поддержал: Victor Grushetsky
  • Интересная задачка (С/C++)

    Я тут пораскинул мыслями и у меня получилось нечто весьма интересное:

    #define clamp(x) ({ \
    	typeof(x) val = (x); \
    	unsigned char c = (val < 0 ) ? 0 : val; \
    	(val > 255 ) ? 255 : с; })
    
    
    unsigned char clamp2(int i)
    {
    	return clamp(i);
    }
    

    ассемблерный листинг:

    unsigned char clamp2(int i)
    {
        return clamp(i);
       0:   81 ff ff 00 00 00       cmp    $0xff,%edi
       6:   b8 ff ff ff ff          mov    $0xffffffff,%eax
       b:   7f 0a                   jg     17 <clamp2+0x17>
       d:   85 ff                   test   %edi,%edi
       f:   b8 00 00 00 00          mov    $0x0,%eax
      14:   0f 49 c7                cmovns %edi,%eax
    }
      17:   f3 c3                   repz retq
    

    Сделай, плиз, бенчмарк именно с макросом clamp(x) ?

  • Интересная задачка (С/C++)

    Тоесть по скорости теже 96 ms?

    Т.е. оптимизатор switch/case у gcc по-ходу отбит наглухо. gcc -v:

    Так и есть

  • Интересная задачка (С/C++)

  • Интересная задачка (С/C++)

    gcc с -O3 лажанулся капитально — он создал таки табличку, но табличку переходов вместо данных

    Хм ... да лажанулся ... он должен был другую оптимизацию использовать. У меня на уме есть еще один, чисто гцц-шный трюк, но он требует времени на реализацию. Возможно попробую.

  • Интересная задачка (С/C++)

    Кстати, раньше Борланд С/C++ понимал последовательные case в свиче и делал сам табличку в памяти, если мне не изменяет память от 16 элементов.

    Последние лет 10 это дает обратный эффект, и поэтому гцц использует радикально другие оптимизации.

← Сtrl 1... 45678...92 Ctrl →