Il mio ciclo interno contiene un calcolo che la profilazione mostra essere problematica.Formula veloce per una curva di "contrasto elevato"
L'idea è di utilizzare un pixel in scala di grigi x (0 < = x < = 1) e "aumentare il contrasto". Miei requisiti sono abbastanza sciolto, solo il seguente:
- per x < 0,5, 0 < = f (x) x <
- per x> 0,5, x < f (x) = 1 <
- f (0) = 0
- f (x) = 1 - f (1 - x), ossia deve essere "simmetrico"
- Preferibilmente, la funzione deve essere liscia.
Così il grafico deve essere simile a questa:
.
ho due implementazioni (i risultati sono diversi, ma entrambi sono conforme):
float cosContrastize(float i) {
return .5 - cos(x * pi)/2;
}
float mulContrastize(float i) {
if (i < .5) return i * i * 2;
i = 1 - i;
return 1 - i * i * 2;
}
Quindi chiedo sia un microoptimization per una di queste implementazioni, o un originale, più veloce formula di tua scelta.
Forse uno di voi può anche girarsi i bit;)
Forse potremmo aiutarti meglio se puoi dirci quale lingua stai usando (presumo Java) e cosa implica il compilatore/runtime. –
C# con un compilatore MS e runtime, ma sono disposto a riscrivere l'algoritmo critico in C++ se trovo che devo ... –
C# con i nomi dei metodi camelCased? :( – Joren