forked from kscience/kmath
Introduce PerformancePitfall annotation
This commit is contained in:
parent
97c4b81717
commit
f5289abdc3
@ -674,6 +674,9 @@ public final class space/kscience/kmath/misc/CumulativeKt {
|
||||
public static final fun cumulativeSumOfLong (Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence;
|
||||
}
|
||||
|
||||
public abstract interface annotation class space/kscience/kmath/misc/PerformancePitfall : java/lang/annotation/Annotation {
|
||||
}
|
||||
|
||||
public final class space/kscience/kmath/misc/StringSymbol : space/kscience/kmath/misc/Symbol {
|
||||
public static final synthetic fun box-impl (Ljava/lang/String;)Lspace/kscience/kmath/misc/StringSymbol;
|
||||
public static fun constructor-impl (Ljava/lang/String;)Ljava/lang/String;
|
||||
|
@ -59,6 +59,7 @@ public interface Structure2D<T> : StructureND<T> {
|
||||
return get(index[0], index[1])
|
||||
}
|
||||
|
||||
@PerformancePitfall
|
||||
override fun elements(): Sequence<Pair<IntArray, T>> = sequence {
|
||||
for (i in 0 until rowNum)
|
||||
for (j in 0 until colNum) yield(intArrayOf(i, j) to get(i, j))
|
||||
@ -134,6 +135,7 @@ private class MutableStructure2DWrapper<T>(val structure: MutableStructureND<T>)
|
||||
structure[intArrayOf(i, j)] = value
|
||||
}
|
||||
|
||||
@PerformancePitfall
|
||||
override fun elements(): Sequence<Pair<IntArray, T>> = structure.elements()
|
||||
|
||||
override fun equals(other: Any?): Boolean = false
|
||||
|
@ -7,16 +7,14 @@ package space.kscience.kmath.geometry
|
||||
|
||||
import space.kscience.kmath.linear.Point
|
||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||
import space.kscience.kmath.operations.GroupElement
|
||||
import space.kscience.kmath.operations.ScaleOperations
|
||||
import space.kscience.kmath.operations.invoke
|
||||
import kotlin.math.sqrt
|
||||
|
||||
@OptIn(UnstableKMathAPI::class)
|
||||
public interface Vector2D : Point<Double>, Vector, GroupElement<Vector2D, Euclidean2DSpace> {
|
||||
public interface Vector2D : Point<Double>, Vector{
|
||||
public val x: Double
|
||||
public val y: Double
|
||||
public override val context: Euclidean2DSpace get() = Euclidean2DSpace
|
||||
public override val size: Int get() = 2
|
||||
|
||||
public override operator fun get(index: Int): Double = when (index) {
|
||||
|
@ -7,17 +7,15 @@ package space.kscience.kmath.geometry
|
||||
|
||||
import space.kscience.kmath.linear.Point
|
||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||
import space.kscience.kmath.operations.GroupElement
|
||||
import space.kscience.kmath.operations.ScaleOperations
|
||||
import space.kscience.kmath.operations.invoke
|
||||
import kotlin.math.sqrt
|
||||
|
||||
@OptIn(UnstableKMathAPI::class)
|
||||
public interface Vector3D : Point<Double>, Vector, GroupElement<Vector3D, Euclidean3DSpace> {
|
||||
public interface Vector3D : Point<Double>, Vector {
|
||||
public val x: Double
|
||||
public val y: Double
|
||||
public val z: Double
|
||||
public override val context: Euclidean3DSpace get() = Euclidean3DSpace
|
||||
public override val size: Int get() = 3
|
||||
|
||||
public override operator fun get(index: Int): Double = when (index) {
|
||||
|
@ -12,7 +12,6 @@ import space.kscience.kmath.nd.FieldND
|
||||
import space.kscience.kmath.nd.Strides
|
||||
import space.kscience.kmath.nd.StructureND
|
||||
import space.kscience.kmath.operations.Group
|
||||
import space.kscience.kmath.operations.GroupElement
|
||||
import space.kscience.kmath.operations.ScaleOperations
|
||||
import space.kscience.kmath.operations.invoke
|
||||
|
||||
@ -26,9 +25,9 @@ public data class DomainBin<T : Comparable<T>>(
|
||||
|
||||
@OptIn(UnstableKMathAPI::class)
|
||||
public class IndexedHistogram<T : Comparable<T>, V : Any>(
|
||||
override val context: IndexedHistogramSpace<T, V>,
|
||||
public val context: IndexedHistogramSpace<T, V>,
|
||||
public val values: StructureND<V>,
|
||||
) : Histogram<T, Bin<T>>, GroupElement<IndexedHistogram<T, V>, IndexedHistogramSpace<T, V>> {
|
||||
) : Histogram<T, Bin<T>> {
|
||||
|
||||
override fun get(point: Point<T>): Bin<T>? {
|
||||
val index = context.getIndex(point) ?: return null
|
||||
|
@ -10,6 +10,7 @@ import org.nd4j.linalg.api.ops.impl.scalar.Pow
|
||||
import org.nd4j.linalg.api.ops.impl.transforms.strict.*
|
||||
import org.nd4j.linalg.factory.Nd4j
|
||||
import org.nd4j.linalg.ops.transforms.Transforms
|
||||
import space.kscience.kmath.misc.PerformancePitfall
|
||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||
import space.kscience.kmath.nd.*
|
||||
import space.kscience.kmath.operations.*
|
||||
@ -52,6 +53,7 @@ public interface Nd4jArrayAlgebra<T, C : Algebra<T>> : AlgebraND<T, C> {
|
||||
return struct
|
||||
}
|
||||
|
||||
@PerformancePitfall
|
||||
public override fun StructureND<T>.map(transform: C.(T) -> T): Nd4jArrayStructure<T> {
|
||||
val newStruct = ndArray.dup().wrap()
|
||||
newStruct.elements().forEach { (idx, value) -> newStruct[idx] = elementContext.transform(value) }
|
||||
|
@ -6,6 +6,7 @@
|
||||
package space.kscience.kmath.nd4j
|
||||
|
||||
import org.nd4j.linalg.factory.Nd4j
|
||||
import space.kscience.kmath.misc.PerformancePitfall
|
||||
import space.kscience.kmath.nd.StructureND
|
||||
import space.kscience.kmath.operations.invoke
|
||||
import kotlin.math.PI
|
||||
@ -14,6 +15,7 @@ import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.test.fail
|
||||
|
||||
@OptIn(PerformancePitfall::class)
|
||||
internal class Nd4jArrayAlgebraTest {
|
||||
@Test
|
||||
fun testProduce() {
|
||||
@ -28,7 +30,7 @@ internal class Nd4jArrayAlgebraTest {
|
||||
|
||||
@Test
|
||||
fun testMap() {
|
||||
val res = with(IntNd4jArrayRing(intArrayOf(2, 2))) { one.map() { it + it * 2 } }
|
||||
val res = with(IntNd4jArrayRing(intArrayOf(2, 2))) { one.map { it + it * 2 } }
|
||||
val expected = (Nd4j.create(2, 2) ?: fail()).asIntStructure()
|
||||
expected[intArrayOf(0, 0)] = 3
|
||||
expected[intArrayOf(0, 1)] = 3
|
||||
|
@ -6,6 +6,7 @@
|
||||
package space.kscience.kmath.nd4j
|
||||
|
||||
import org.nd4j.linalg.factory.Nd4j
|
||||
import space.kscience.kmath.misc.PerformancePitfall
|
||||
import space.kscience.kmath.nd.get
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
@ -13,6 +14,7 @@ import kotlin.test.assertNotEquals
|
||||
import kotlin.test.fail
|
||||
|
||||
internal class Nd4jArrayStructureTest {
|
||||
@OptIn(PerformancePitfall::class)
|
||||
@Test
|
||||
fun testElements() {
|
||||
val nd = Nd4j.create(doubleArrayOf(1.0, 2.0, 3.0))!!
|
||||
|
@ -1,5 +1,6 @@
|
||||
package space.kscience.kmath.tensors.core
|
||||
|
||||
import space.kscience.kmath.misc.PerformancePitfall
|
||||
import space.kscience.kmath.nd.DefaultStrides
|
||||
import space.kscience.kmath.nd.MutableBufferND
|
||||
import space.kscience.kmath.nd.as1D
|
||||
@ -24,6 +25,7 @@ internal class TestDoubleTensor {
|
||||
assertEquals(tensor.value(), value)
|
||||
}
|
||||
|
||||
@OptIn(PerformancePitfall::class)
|
||||
@Test
|
||||
fun testStrides() = DoubleTensorAlgebra {
|
||||
val tensor = fromArray(intArrayOf(2, 2), doubleArrayOf(3.5, 5.8, 58.4, 2.4))
|
||||
|
Loading…
Reference in New Issue
Block a user