Skip to content

Instantly share code, notes, and snippets.

@crakaC
Last active October 18, 2020 07:23
Show Gist options
  • Save crakaC/3815b0f7c39c47ca77a8ecab418c8900 to your computer and use it in GitHub Desktop.
Save crakaC/3815b0f7c39c47ca77a8ecab418c8900 to your computer and use it in GitHub Desktop.
プロコンやるときはプリミティブな配列を使おう
Long[]
483.9
long[]
100.0
Long <- long
701.1
long <- Long
184.0
import kotlin.system.*
fun main(){
val N = 3_000
run{
val array = Array(N){Array(N){Array(5){0L}}}
println(array[0][0].javaClass.simpleName)
val t = average(10){
for(i in 0 until N){
for(j in 0 until N){
for(k in 0 until 5){
array[i][j][k] = array[i][j][k] + 1L
}
}
}
}
println(t)
}
run{
val array = Array(N){Array(N){LongArray(5){0L}}}
println(array[0][0].javaClass.simpleName)
val t = average(10){
for(i in 0 until N){
for(j in 0 until N){
for(k in 0 until 5){
array[i][j][k] = array[i][j][k] + 1L
}
}
}
}
println(t)
}
run{
println("Long <- long")
val array = Array(N){Array(N){Array(5){0L}}}
val longArray = Array(N){Array(N){LongArray(5){0L}}}
val t = average(10){
for(i in 0 until N){
for(j in 0 until N){
for(k in 0 until 5){
array[i][j][k] = longArray[i][j][k] + 1L
}
}
}
}
println(t)
}
run{
println("long <- Long")
val array = Array(N){Array(N){Array(5){0L}}}
val longArray = Array(N){Array(N){LongArray(5){0L}}}
val t = average(10){
for(i in 0 until N){
for(j in 0 until N){
for(k in 0 until 5){
longArray[i][j][k] = array[i][j][k] + 1L
}
}
}
}
println(t)
}
}
fun average(n: Int, block: () -> Unit) = (1..n).map{
measureTimeMillis{
block()
}
}.average()
@crakaC
Copy link
Author

crakaC commented Oct 18, 2020

アンボクシングは大したことないけどボクシングが発生するとかなり時間かかる

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment