package Ġnet . tor val d . ter rar um . tests Ċ Ċ import Ġnet . tor val d . colour util . Colour Util . get L umin osity Ċ import Ġnet . tor val d . colour util . Colour Util . get L umin osity Quick Ċ import Ġnet . tor val d . colour util . RGB Ċ import Ġnet . tor val d . colour util . linear ise Ċ import Ġnet . tor val d . colour util . un Linear ise Ċ import Ġnet . tor val d . random . H QR NG Ċ import Ġkotlin . system . measure Nano Time Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġmin ja es ong Ġon Ġ 2 0 1 9 - 0 1 - 0 3 . Ċ Ġ*/ Ċ class ĠRGB to XYZ Benchmark Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTEST _ SIZE Ġ= Ġ 1 0 0 0 0 0 ĊĠĠĠ Ġprivate Ġval ĠTEST _ CHUNK Ġ= Ġ 1 0 0 0 ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrng Ġ= ĠH QR NG () ĊĠĠĠĠĠĠĠ Ġ// Ġprepare Ġtest Ġsets ĊĠĠĠĠĠĠĠ Ġval Ġtest Sets Ġ= ĠArray ( TEST _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRGB ( rng . next Float (), Ġrng . next Float (), Ġrng . next Float ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġsure Ġto Ġinitialise ĠUtil 's ĠLUT ĊĠĠĠĠĠĠĠ Ġtest Sets [ rng . nextInt ( 0 , Ġtest Sets . size )]. linear ise () ĊĠĠĠĠĠĠĠ Ġtest Sets [ rng . nextInt ( 0 , Ġtest Sets . size )]. un Linear ise () ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġconduct Ġthe Ġexperiment ĊĠĠĠĠĠĠĠ Ġval Ġtimer 1 Ġ= ĠArrayList < Long >() ĊĠĠĠĠĠĠĠ Ġval Ġtimer 2 Ġ= ĠArrayList < Long >() ĊĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠTEST _ SIZE Ġstep ĠTEST _ CHUNK ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime 1 Ġ= Ġmeasure Nano Time Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġi Ġuntil Ġi Ġ+ ĠTEST _ CHUNK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Sets [ c ]. get L umin osity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime 2 Ġ= Ġmeasure Nano Time Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġi Ġuntil Ġi Ġ+ ĠTEST _ CHUNK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Sets [ c ]. get L umin osity Quick () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer 1 . add ( time 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer 2 . add ( time 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġprint Ġout Ġcaptured Ġdata ĊĠĠĠĠĠĠĠ Ġprintln (" with ĠLUT \ t no ĠLUT \ tm ult ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġtimer 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ timer 1 [ i ] }\ t ${ timer 2 [ i ] }\ t ${ timer 1 [ i ]. toFloat () Ġ/ Ġtimer 2 [ i ]} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠRGB to XYZ Benchmark (). invoke () Ċ }