более эффективная версия этого? - PullRequest
1 голос
/ 29 декабря 2010

У меня есть эта штука здесь:

function numOfPackets(bufferSize, packetSize) {
    if (bufferSize <= 0 || packetSize > bufferSize) return 0;
    if (packetSize < 0) throw Error();
    var out = 0;


    for(;;){
     out++; 
     bufferSize = bufferSize - packetSize;
     if( packetSize > bufferSize ) break;
    }

    return out;
}

по которому я часто бегаю, можете ли вы дать мне более эффективный вариант?

1 Ответ

4 голосов
/ 29 декабря 2010

Я предполагаю, что вы пишете в JavaScript или что-то подобное, в этом случае используйте:

function numOfPackets(bufferSize, packetSize) {
    if (bufferSize <= 0) return 0;
    if (packetSize <= 0) throw Error();
    return Math.floor(bufferSize / packetSize);
}

Также обратите внимание, что ваш оригинальный код входит в бесконечный цикл, когда packetSize = 0;

Эквивалентно в C ++:

int numOfPackets(int bufferSize, int packetSize) {
    if (bufferSize <= 0) return 0;
    if (packetSize <= 0) throw Error();
    return bufferSize / packetSize;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...