Faster hex validation
This commit is contained in:
@@ -23,6 +23,7 @@ package com.vitorpamplona.quartz.benchmark
|
|||||||
import androidx.benchmark.junit4.BenchmarkRule
|
import androidx.benchmark.junit4.BenchmarkRule
|
||||||
import androidx.benchmark.junit4.measureRepeated
|
import androidx.benchmark.junit4.measureRepeated
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import com.vitorpamplona.quartz.encoders.HexValidator
|
||||||
import junit.framework.TestCase.assertEquals
|
import junit.framework.TestCase.assertEquals
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -65,4 +66,9 @@ class HexBenchmark {
|
|||||||
|
|
||||||
benchmarkRule.measureRepeated { assertEquals(testHex, fr.acinq.secp256k1.Hex.encode(bytes)) }
|
benchmarkRule.measureRepeated { assertEquals(testHex, fr.acinq.secp256k1.Hex.encode(bytes)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun isHex() {
|
||||||
|
benchmarkRule.measureRepeated { HexValidator.isHex(testHex) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,29 +34,9 @@ fun HexKey.hexToByteArray(): ByteArray {
|
|||||||
object HexValidator {
|
object HexValidator {
|
||||||
private fun isHexChar(c: Char): Boolean {
|
private fun isHexChar(c: Char): Boolean {
|
||||||
return when (c) {
|
return when (c) {
|
||||||
'0',
|
in '0'..'9' -> true
|
||||||
'1',
|
in 'a'..'f' -> true
|
||||||
'2',
|
in 'A'..'F' -> true
|
||||||
'3',
|
|
||||||
'4',
|
|
||||||
'5',
|
|
||||||
'6',
|
|
||||||
'7',
|
|
||||||
'8',
|
|
||||||
'9',
|
|
||||||
'a',
|
|
||||||
'b',
|
|
||||||
'c',
|
|
||||||
'd',
|
|
||||||
'e',
|
|
||||||
'f',
|
|
||||||
'A',
|
|
||||||
'B',
|
|
||||||
'C',
|
|
||||||
'D',
|
|
||||||
'E',
|
|
||||||
'F',
|
|
||||||
-> true
|
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user