Tak este vyhod to for ak M==2 a uz to asi lepsie nejde.
if(M==2)
{ while (bitreader.hasLeft())
{
nr = 0;
while (bitreader.getBit()) nr+=2;
if(bitreader.getBit())
nr |= 1;
intwriter.putInt(nr);
}
}
else
{ while (bitreader.hasLeft())
{
nr = 0;
while (bitreader.getBit()) nr+=M;
for (mask = 1; mask < M; mask<<=1)
if(bitreader.getBit())
nr |= mask;
intwriter.putInt(nr);
}
}
podobne aj v koderi (neviem jak presne mas momentalne implementovany koder). Tiez neviem kolko uspory to prinesie :) Zavisi od prekladaca.Potom este sa da urobit to cele multithread pricom toto bude jeden thread a ostatne veci (konverzia farby a predikcie atd) budu dalsie thready, komunikovat to bude cez nejake FIFO buffre (pozor na critical section). To je ale potom uz komplikovanejsie na realizaciu.