powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / возможности switch()
15 сообщений из 65, страница 3 из 3
возможности switch()
    #39762842
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky...Насчитал столько же констант ))

ну вот не правда Ваша - семёрки нема :))

ну вот чтоб не возбуждать лишний раз другой вектор - не стал рожать.
...
Рейтинг: 0 / 0
возможности switch()
    #39762897
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskymaytonДа разве в константах дело. Скажите по честному кто помнит порядок срабатывания метки case 0: и начала цикла с постусловием do?

Так понятнее? ))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    switch (count % 8) {
    case 0:
        do {
            *to = *from++;
            case 7:
            *to = *from++;
            case 6:
            *to = *from++;
            case 5:
            *to = *from++;
            case 4:
            *to = *from++;
            case 3:
            *to = *from++;
            case 2:
            *to = *from++;
            case 1:
            *to = *from++;
        } while (--n > 0);
    }


Уже лучше. Только странно что *to не инкременируется.
...
Рейтинг: 0 / 0
возможности switch()
    #39762913
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТолько странно что *to не инкременируется.
to - это порт В/В
...
Рейтинг: 0 / 0
возможности switch()
    #39762920
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да в коде вообще нет константан! Казнить, не помиловать! Дилетанта

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

Модератор: Редактировано

Вот так выглядит код, если его привести к c\c++

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
// Example program
#include <iostream>
#include <string>

void send(char* to, const char * from,  int count)
{
    int n = (count + 7) / 8;
    switch (count % 8) {
    case 0: do { *to++ = *from++; // Всё, данная метка никак не относится к switch
    case 7:      *to++ = *from++;
    case 6:      *to++ = *from++;
    case 5:      *to++ = *from++;
    case 4:      *to++ = *from++;
    case 3:      *to++ = *from++;
    case 2:      *to++ = *from++;
    case 1:      *to++ = *from++;
            } while (--n > 0);
    }
}


int main()
{
    char dd[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    char xx[] = "000000000000000000000000000000000000000000000";
  send(dd,xx, 18 );  
    

  std::cout << dd << "!\n";
}

...
Рейтинг: 0 / 0
возможности switch()
    #39762924
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0То же самое по скорости (в оригинале упор на скорость), проигрыш в размере. читаемость 100%

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
register n = count / 8;

while (n-- > 0)
{
  *to = *from++;
  *to = *from++;
  *to = *from++;
  *to = *from++;
  *to = *from++;
  *to = *from++;
  *to = *from++;
  *to = *from++;
}

switch (count % 8)
{
case 7:
  *to = *from++;
case 6:
  *to = *from++;
case 5:
  *to = *from++;
case 4:
  *to = *from++;
case 3:
  *to = *from++;
case 2:
  *to = *from++;
case 1:
  *to = *from++;
case 0:
  break;
}



Тесты в студию! С 10000000 вызовами

Хотя если ты не подметил, что подметили сверху. То ты и код то не запускал
...
Рейтинг: 0 / 0
возможности switch()
    #39762929
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что бы закрепить, что делает код, вам ASM листинг

https://godbolt.org/z/bN7U43
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
send(char*, char const*, int):                          # @send(char*, char const*, int)
        push    EBX
        push    ESI
        mov     EAX, DWORD PTR [ESP + 20]
        mov     ECX, EAX
        sar     ECX, 31
        shr     ECX, 29
        add     ECX, EAX
        and     ECX, -8
        mov     ESI, EAX
        sub     ESI, ECX
        cmp     ESI, 7
        ja      .LBB0_11
        lea     ECX, DWORD PTR [EAX + 7]
        sar     ECX, 31
        shr     ECX, 29
        lea     EAX, DWORD PTR [EAX + ECX + 7]
        sar     EAX, 3
        mov     ECX, DWORD PTR [ESP + 16]
        mov     EDX, DWORD PTR [ESP + 12]
        jmp     DWORD PTR [4*ESI + .LJTI0_0]
.LBB0_2:
        mov     BL, BYTE PTR [ECX]
        mov     BYTE PTR [EDX], BL
        inc     ECX
        inc     EDX
.LBB0_3:
        mov     BL, BYTE PTR [ECX]
        mov     BYTE PTR [EDX], BL
        inc     ECX
        inc     EDX
.LBB0_4:
        mov     BL, BYTE PTR [ECX]
        mov     BYTE PTR [EDX], BL
        inc     ECX
        inc     EDX
.LBB0_5:
        mov     BL, BYTE PTR [ECX]
        mov     BYTE PTR [EDX], BL
        inc     ECX
        inc     EDX
.LBB0_6:
        mov     BL, BYTE PTR [ECX]
        mov     BYTE PTR [EDX], BL
        inc     ECX
        inc     EDX
.LBB0_7:
        mov     BL, BYTE PTR [ECX]
        mov     BYTE PTR [EDX], BL
        inc     ECX
        inc     EDX
.LBB0_8:
        mov     BL, BYTE PTR [ECX]
        mov     BYTE PTR [EDX], BL
        inc     ECX
        inc     EDX
.LBB0_9:
        mov     BL, BYTE PTR [ECX]
        mov     BYTE PTR [EDX], BL
        dec     EAX
        test    EAX, EAX
        jle     .LBB0_11
        inc     ECX
        inc     EDX
        jmp     .LBB0_2
.LBB0_11:
        pop     ESI
        pop     EBX
        ret
.LJTI0_0:
        .long   .LBB0_2
        .long   .LBB0_9
        .long   .LBB0_8
        .long   .LBB0_7
        .long   .LBB0_6
        .long   .LBB0_5
        .long   .LBB0_4
        .long   .LBB0_3

...
Рейтинг: 0 / 0
возможности switch()
    #39762930
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно заметить, что при 8 тактов нет не одной проверки. Что даёт огромный прирост в те времена
...
Рейтинг: 0 / 0
возможности switch()
    #39762936
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гирлионайльдо, Луговский? Залогонься друг!
...
Рейтинг: 0 / 0
возможности switch()
    #39762945
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Попутал.
...
Рейтинг: 0 / 0
возможности switch()
    #39762946
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини. Просто твой напористый стиль напомнил одного. Может чуть сбавишь обороты?

Мы тут все люди спокойные. Как в клубе.

OK?
...
Рейтинг: 0 / 0
возможности switch()
    #39762949
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ну ладно, ладно. Дурачок было слишком прямолинейно. <<Отброс средних лет>>. Вот так в самый раз.
...
Рейтинг: 0 / 0
возможности switch()
    #39762991
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай как зарубежных форумах. Сухо и по делу.

Я - добрый модератор. А другие - злые.
...
Рейтинг: 0 / 0
возможности switch()
    #39763037
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0Гирлионайльдо..коллектив. ..из за некомпетентности..

ну, судя по коду - писал его лох от сей.
1) использование констант в коде +1 шаг к увольнению.
2) если надо использовать скорость копирования, то откройте для себя стандартные функции библиотек (и как они решают эти дела. тут надо бы сказать про ту обезьяну которая не использует опыт человечества ранее накопленный) +10 шагов к увольнению , с записью в трудовую о не компетентности в данной области
3) время сколько затратит другой разработчик который заглянет в этот код? 5 секунд? 5 минут? Или 30 минут лазанья по компиляторам, с проверкой - а что хотел автор, правильно ли они превращают идею автора в результат, как это адаптировать к другим условиям которые пришли с выше... +5 шагов к увольнению организатора работ к допуску этого горе программиста к коду.
4) ... там ышо можно наковырять существенные минусы этого говнокода...

удачи вам, она вам потребуется
(круглый)

Этот человек, зашёл чисто что бы высказать своё больное мнение, которое ему навязали с целью его обидеть.

Он сам себе противоречит в 2 и 3 пункте, относительно первого. Потому что константы надо использовать активно и везде.
Пример WinApi - Curl и другое. Они используют константы для тонкой настройки какой нибудь прослойки.

Если человек будет писать значения константы А не константы, ибо у kolobok0 пальцы от остеохондроза давно рассыпались Может быть. То его точно уволят!

А может уже kolobok0 уволили, и он решил другим свой негативный опыт передать

... Он задел тему, стандартных функций копирования, когда я написал что уже используют SSE но он задел это !. Нагло попытавшись высказать свой словесный шоколад

... Он всего лишь Дилетант который пришёл на форум всем мозги морочить.

И не понятно кто его так обидел.
...
Рейтинг: 0 / 0
возможности switch()
    #39763039
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гирлионайльдо,

если кто-то некорректно высказался, то это не дает тебе право вести себя аналогично. Соблюдай правила форума. Не понравилось, напиши что не понравилось или нажми "Сообщить модератору".
...
Рейтинг: 0 / 0
возможности switch()
    #39763164
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Закрыто
...
Рейтинг: 0 / 0
15 сообщений из 65, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / возможности switch()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]