Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 2 ПерваяПервая 1 2
Показано с 11 по 12 из 12

Тема: GetNumberOfDigits

  1. #11
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от MassonNN Посмотреть сообщение
    Ну подсчитать то можно, наверное?)))
    Между ними нет прямой связи.

    Цитата Сообщение от MassonNN Посмотреть сообщение
    Ещё есть такой вариант:

    Код HTML:
    mov eax,10
    cmp ecx,10^9
    sbb eax,0
    cmp ecx,10^8
    sbb eax,0
    ....
    cmp ecx,10^2
    sbb eax,0
    cmp ecx,10^1
    sbb eax,0
    ecx - число N, eax - количество цифр в числе.
    Вот только виртуальная машина Pawn AMX оперирует... собственно, байткодом Pawn AMX, который не настолько гибок в сравнении с форматом x86. И если идея в том, чтобы повысить производительность кода за счёт избавления от ветвлений, то в AMX это сделать сложнее. Во-первых, нельзя так просто взять и сравнить два числа одной инструкцией: нужно загрузить одно число в регистр PRI, другое в регистр ALT, и только тогда сравнить их, что занимает в сумме 3 инструкции (единственное исключение здесь - инструкция "eq.c.pri/alt N"; ей можно сравнить предварительно загруженное в PRI число со значением "N", но так можно только проверить на равенство/неравенство, нам же нужно проверить на "больше или равно" или "меньше или равно"). Во-вторых, у виртуальной машины всего 2 регистра (PRI и ALT). После сравнения двух чисел свободных регистров не останется и поэтому перед следующим сравнением придётся заново загружать в PRI значение из переменной number, а перед этим ещё куда-то сохранить результат от предыдущих сравнений ("накопленное" количество цифр в числе). Всё это сводит на нет пользу от такой "оптимизации".
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. #12
    Аватар для MassonNN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.03.2018
    Адрес
    Москва
    Сообщений
    129
    Репутация:
    6 ±
    error 010: invalid function or declaration

    кидает именно на
    check1:

 

 
Страница 2 из 2 ПерваяПервая 1 2

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •