
рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдЕрдВрджрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХрдиреАрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЕрдкрдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдПрдХ рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдбрд╛рд▓реНрд╡рд┐рдХ рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рддрдХрдиреАрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВред
рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдПрдкреАрдЖрдИ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 2 рдбреА / 3 рдбреА рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдЧрдгрд┐рдд рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрд╡рддрдВрддреНрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕рдЬрд╛рддреАрдп рдЙрдк-рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЬрд▓реНрджреА рдФрд░ рдмрд╣реБ-рдХреЛрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреА рддрдХрдиреАрдХ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдкреИрдЯрд░реНрди рдорд╛рдиреНрдпрддрд╛, рднреМрддрд┐рдХ рдореЙрдбрд▓рд┐рдВрдЧ, рдПрдХ рд╕реЗрд▓реБрд▓рд░ рдСрдЯреЛрдореЗрдЯреЛрди рдореЙрдбрд▓, рдЖрджрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ dalvik рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЕрдкрдиреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЛ рдирд╣реАрдВ рдЦреЛрдПрдЧреАред
1. рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдЕрдВрджрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХрдиреАрдХ
рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдЕрдВрджрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХрдиреАрдХ рдХреЗ рддрдВрддреНрд░, рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реВрдВред
1.1 рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдлрд╝рд▓рд╛рдЗрди рд╕рдВрдХрд▓рди
рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рдиреАрдХреЙрдореНрдм / рдПрдВрдбреНрд░реЙрдЗрдб 3.0 (рдПрдкреАрдЖрдИ 11) рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реБрдЖред рдЕрд░реНрдерд╛рддреН, рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ рдореЗрдВ, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдЯреВрд▓реНрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ, llvm-rs-cc (рдСрдлрд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░) рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ (* .rs рдлрд╝рд╛рдЗрд▓) рдХреЛ рдмрд╛рдпрдЯреЗрдХреЛрдб (* .bc рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕реЗрд╕ (*ред рдЬрд╛рд╡рд╛) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред ) рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ред Llvm-rs-cc Android рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрд▓реИрдВрдЧ
рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ
LLVM рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб рд╣реИред

1.2 рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рди-рдЯрд╛рдЗрдо рд╕рдВрдХрд▓рди
рдПрдВрдбреНрд░реЙрдЗрдб рдиреЗ рдПрд▓рдПрд▓рд╡реАрдПрдо рдмреИрдХ-рдПрдВрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдврд╛рдВрдЪрд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рдЬреЛ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЗ рд░рди-рдЯрд╛рдЗрдо рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рддрд╛ рд╣реИ, рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдВрддреНрд░рдг рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдврд╛рдВрдЪреЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:
рд▓рд┐рдмреЗрдХ рдПрд▓рдПрд▓рд╡реАрдПрдо рд╕рдВрджрд░реНрдн рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдмрд╛рдпреЛрдЯреЗрдХ рдореЗрдВ рд╕рдВрдХреЗрддрд┐рдд рдкреНрд░реИрдЧреНрдорд╕ рдФрд░ рдЕрдиреНрдп рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдмрд╛рдпрдЯреЗрдХреЛрдб рдХрд╛ рд╕рдВрдХрд▓рди рдФрд░ libRS рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд▓рд┐рдВрдХрд┐рдВрдЧ;
libRS рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдЧрдгрд┐рдд, рд╕рдордп, рдбреНрд░рд╛рдЗрдВрдЧ, рд░реЗрдл-рдЧрд┐рдирддреА, ...), рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдкреНрд░рдХрд╛рд░, рддрддреНрд╡, рдЖрд╡рдВрдЯрди, рдореЗрд╖, рд╡рд┐рднрд┐рдиреНрди рдореИрдЯреНрд░рд┐рдХреНрд╕, ...) рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддрд╛ рд╣реИред
рдлрд╛рдпрджреЗ:- рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдЗрдЯ рдХреЛрдб рдХреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ (рд╕реАрдкреАрдпреВ) рдХреЗ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рд░рди-рдЯрд╛рдЗрдо рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- рдЧрдгрдирд╛ рдХреА рдЧрддрд┐ , рд░рди-рдЯрд╛рдЗрдо рд╕рдВрдХрд▓рдХ рдЕрдиреБрдХреВрд▓рди рдФрд░ рдореВрд▓ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрд╛рд░рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред
рдиреБрдХрд╕рд╛рди:- рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди рдХреА рдХрдореА рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдпрд╣рд╛рдБ рдкреНрд░рд╕реНрддреБрдд рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рди-рдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рддрдХ рд╕реАрдорд┐рдд рд╣реИ ;
- GPU, DSP рдкрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереНрд░реЗрдбреНрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рдЕрднрд╛рд╡ред рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╖рдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рд░рди-рдЯрд╛рдЗрдо рдмреИрд▓реЗрдВрд╕рд┐рдВрдЧ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
2. рджрд▓рд╡рд┐рдХ рдмрдирд╛рдо рдореЛрдиреЛрдХреНрд░реЛрдо рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рджрд▓рд╡рд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
Dalvik_MonoChromeFilter (рдПрдХ рд░рдВрдЧ RGB рдЫрд╡рд┐ рдХреЛ рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛) (рдореЛрдиреЛрдХреНрд░реЛрдо):
private void Dalvik_MonoChromeFilter() { float MonoMult[] = {0.299f, 0.587f, 0.114f}; int mInPixels[] = new int[mBitmapIn.getHeight() * mBitmapIn.getWidth()]; int mOutPixels[] = new int[mBitmapOut.getHeight() * mBitmapOut.getWidth()]; mBitmapIn.getPixels(mInPixels, 0, mBitmapIn.getWidth(), 0, 0, mBitmapIn.getWidth(), mBitmapIn.getHeight()); for(int i = 0;i < mInPixels.length;i++) { float r = (float)(mInPixels[i] & 0xff); float g = (float)((mInPixels[i] >> 8) & 0xff); float b = (float)((mInPixels[i] >> 16) & 0xff); int mono = (int)(r * MonoMult[0] + g * MonoMult[1] + b * MonoMult[2]); mOutPixels[i] = mono + (mono << 8) + (mono << 16) + (mInPixels[i] & 0xff000000); } mBitmapOut.setPixels(mOutPixels, 0, mBitmapOut.getWidth(), 0, 0, mBitmapOut.getWidth(), mBitmapOut.getHeight()); }
рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ? рд╕реНрд╡рддрдВрддреНрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд▓реВрдк, рдкрд┐рдХреНрд╕рд▓реНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ "рдкреАрд╕"ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрдВрдЯреЗрд▓ рдПрдЯрдо Z2460 1.6GHz рдкрд░ рдореЗрдЧрд╛рдлреЛрди рдорд┐рдВрдЯ рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдЖрдИрд╕реАрдПрд╕ 4.0.4 рдФрд░ 600x1024 рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рд▓реЗрдЧреЛ рд░реЛрдмреЛрдЯ рдХреЛ рдирдП рд╕рд╛рд▓ рдХреЗ рдЙрдкрд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд▓реЗ рдЬрд╛рдПрдВрдЧреЗред


рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЛ рдорд╛рдкреЗрдВрдЧреЗ:
private long startnow; private long endnow; startnow = android.os.SystemClock.uptimeMillis(); Dalvik_MonoChromeFilter(); endnow = android.os.SystemClock.uptimeMillis(); Log.d("Timing", "Excution time: "+(endnow-startnow)+" ms");
"рдЯрд╛рдЗрдорд┐рдВрдЧ" рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢ рдХреЛ
рдПрдбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдПрдХ рджрд░реНрдЬрди рдорд╛рдк рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдорд╛рдк рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдкреНрд░рд╕рд╛рд░ рдЫреЛрдЯрд╛ рд╣реИред
рджрд▓рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп 353 рдПрдордПрд╕ рдерд╛редрдиреЛрдЯ: рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AsyncTask рдХреНрд▓рд╛рд╕),
рд╕рд░реНрд╡реЛрддреНрддрдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЗрдВрдЯреЗрд▓ рдПрдЯрдо -2460 1.6GHz рдкрд░ рджреЛ рддрд╛рд░реНрдХрд┐рдХ рдХреЛрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рджреЛрд╣рд░реЗ рддреНрд╡рд░рдг рдХреЛ рдирд┐рдЪреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рд╕рдорд╛рди рдлрд╝рд┐рд▓реНрдЯрд░
RS_MonoChromeFilter рдХреЗ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
private RenderScript mRS; private Allocation mInAllocation; private Allocation mOutAllocation; private ScriptC_mono mScript; тАж private void RS_MonoChromeFilter() { mRS = RenderScript.create(this); mInAllocation = Allocation.createFromBitmap(mRS, mBitmapIn, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); mOutAllocation = Allocation.createTyped(mRS, mInAllocation.getType()); mScript = new ScriptC_mono(mRS, getResources(), R.raw.mono); mScript.forEach_root(mInAllocation, mOutAllocation); mOutAllocation.copyTo(mBitmapOut); }
рдиреЛрдЯ: рд╣рдо рджрд▓рд┐рддреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред
рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╣реА рдЫрд╡рд┐ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп 112 рдПрдордПрд╕ рдерд╛редрд╣рдореЗрдВ 3.2x (dalvik рдФрд░ renderscript рд░рдирдЯрд╛рдЗрдо рддреБрд▓рдирд╛: 353/112 = 3.2) рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдорд┐рд▓рд╛ред
рдиреЛрдЯ: рдПрдХ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╕рдордп рдореЗрдВ рдПрдХ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджрд░реНрдн рдмрдирд╛рдирд╛, рдЖрд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЖрд░рдВрдн рдХрд░рдирд╛, рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдирд╛ рдФрд░ рдореЛрдирд░реЛ рдореЗрдВ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдиреЛрдЯ: рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рди рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, apk рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХреЗрд╡рд▓ рджрд╛рд▓рдЪреАрдиреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╛рдпрдЯреЗрдХреЛрдб (* .bc рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, dalvik рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЖрдХрд╛рд░ 404KB рдерд╛, рдФрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЖрдХрд╛рд░ 406KB рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ 2KB рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдЗрдЯ рдХреЛрдб (mono.bc) рд╣реИред
3. рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЕрдиреБрдХреВрд▓рди
рд░реЗрдВрдбрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХреА рдереЛрдбрд╝реА рд╕рдЯреАрдХрддрд╛ рдХреЛ рдЫреЛрдбрд╝ рдХрд░ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╣рд╛рде рдореЗрдВ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдкреНрд░реИрдЧреНрдо rs_fp_imprecise рдХреЛ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ :
рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк,
рд╣рдореЗрдВ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд 10% рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдорд┐рд▓рддрд╛ рд╣реИ: 112 рдПрдордПрд╕ред -> 99 рдорд┐редрдиреЛрдЯ: рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдиреЗрддреНрд░рд╣реАрди рдПрдХ рд╣реА рдореЛрдиреЛрдХреНрд░реЛрдо рдЫрд╡рд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдХреЗ рдорд┐рд▓рддреА рд╣реИред
рдиреЛрдЯ: рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ NDK рдХреЗ рд╡рд┐рдкрд░реАрдд, рд░рди-рдЯрд╛рдЗрдо рдХрдВрдкрд╛рдЗрд▓рд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХрд▓рдХ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (x86, ARM, ...) рдХреЗ рд▓рд┐рдП Android рдХреЗ рдЕрдВрджрд░ рдкреВрд░реНрд╡-рдкрдВрдЬреАрдХреГрдд рд╣реИрдВред
4. рдЫрд╡рд┐ рдЖрдХрд╛рд░реЛрдВ рдкрд░ рджрд▓рд╡рд┐рдХ рдФрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреНрд░рдо рдХреА рдирд┐рд░реНрднрд░рддрд╛
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ: рд╕рдВрд╕рд╛рдзрд┐рдд рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╕рдордп рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреНрдпрд╛ рд╣реИ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдХрд╛рд░ рдХреЗ 4 рдЪрд┐рддреНрд░ 300x512, 600x1024 (рд▓реЗрдЧреЛ рд░реЛрдмреЛрдЯ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдореВрд▓ рдЫрд╡рд┐), 1200x1024, 1200x2048 рд▓реЗрдВ рдФрд░ рдореЛрдиреЛрдХреНрд░реЛрдо рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдордп рдХреЗ рдЕрдиреБрд░реВрдк рдорд╛рдк рдХрд░реЗрдВред рдкрд░рд┐рдгрд╛рдо рдЧреНрд░рд╛рдл рдореЗрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВред

| 300x512 | 600x1024 | 1200x1024 | 1200x2048 |
Dalvik | 85 | 353 | 744 | 1411 |
Renderscript | 75 | 99 | 108 | 227 |
рдЬреАрддрдирд╛ | 1.13 | 3.56 | 6.8 | 6.2 |
рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рджрд▓рд╡рд┐рдХ рдХреЗ рд▓рд┐рдП рд░реИрдЦрд┐рдХ рд╕рдордп рд╕рдВрдмрдВрдз рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджрд░реНрдн рдХреЗ рд╢реБрд░реБрдЖрддреА рд╕рдордп рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреЗ рдЖрдХрд╛рд░реЛрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдн рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджрд░реНрдн рдХрд╛ рдЖрд░рдВрднрд┐рдХ рд╕рдордп рд▓рдЧрднрдЧ 50-60 ms рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдкрд░, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рд╛рдн 4-6x рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рд▓реЗрдЦ рдиреЗ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдореЛрдиреЛрдХреНрд░реЛрдо рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджрд▓рд╡рд┐рдХ рдФрд░ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдВрдЪ рдХреАред рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг, рдХрдВрдкрд╛рдЗрд▓рд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рджреЗрд╢реА рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрд╛рд░рдг, рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реЗ рджрд▓рд┐рдХрддрд╛ рдХрд╛рдлреА рд╣рдж рддрдХ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдЬрдм рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдмрди рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕реА рд╕рдордп рдбрд┐рд╡рд╛рдЗрд╕-рд╕реНрд╡рддрдВрддреНрд░ рд░рд╣рддрд╛ рд╣реИред