전문화에 대해 두 번째 질문을 드려 죄송합니다. 아직 도대체 무슨 일이 벌어지고 있는지 잘 이해하지 못했습니다 ...
하나의 프로젝트 (인공 지능과 Gomoku 게임), 나는 복싱없이 기본 유형을 저장해야하기 때문에 그것의 뜨거운 부분에 내 자신의 간단하고 더러운 @ 특수 광고 특별 컬렉션을 사용하기로 결정했습니다. jvisualvm
의 샘플러에서 나는 명확하게 최적의 이동 검색이 실행을 시작할 때 스칼라 2.10.1 및 전문화 (올바르게 작동하지 않음)
scala.runtime.BoxesRunTime.boxToShort()
는 MS의
수천를 먹어보기 때문에 문제는,이 정말 도움이되지 않는다는 것입니다.
프로젝트 : https://github.com/magicgoose/Gomoku
가난한 "컬렉션"과 파일 : https://github.com/magicgoose/Gomoku/blob/master/src/magicgoose/gomoku/ai/SpecializedCollections.scala
복싱의 원인에있어서, (그들 중 하나를, 나는 생각한다) : 나는 다른 프로젝트를 보았다
trait Indexed[@specialized T] extends Enumerable[T] {
@inline def length: Int
@inline def apply(i: Int): T
// ...
@inline final def findIndex(fun: T => Boolean) = {
@tailrec def find(i: Int): Int = {
if (i < length) {
if (fun(this(i))) i
else find(i + 1)
} else -1
}
find(0)
}
}
(debox : https://github.com/non/debox), 비슷한 일을 수행하려고 시도 (원시 권투없이 데이터 수집),하지만 난 정말 거기 어떻게 완료 이해하지 않습니다.
죄송합니다. 이것은 매우 이상합니다. Btw, 나는 Short를 없애고 Int를 사방에 사용할 수 있으며 2 Bytes를 Short로 패킹하는 대신 Int에 2 개의 Ints를 패킹 할 수 있습니다. 이것은 더티지만이 특정 애플리케이션에서는 괜찮습니다. 왜냐하면 밸류의 범위는 어쨌든 제한되어 있기 때문입니다. 이제 나는 그것을 시도하고 개선 될 것인지를 볼 것입니다. –
나는 Ints로 전환했고 지금은 복싱이 없다. –