Skip to content

Commit 77a207f

Browse files
committed
Improve performance of Matrix4.set/get(column, row) using Unsafe
1 parent 8e8a5d3 commit 77a207f

File tree

6 files changed

+918
-520
lines changed

6 files changed

+918
-520
lines changed

src/org/joml/Matrix4d.java

Lines changed: 4 additions & 260 deletions
Original file line numberDiff line numberDiff line change
@@ -8636,67 +8636,7 @@ public Matrix4d setColumn(int column, Vector4dc src) throws IndexOutOfBoundsExce
86368636
}
86378637

86388638
public double get(int column, int row) {
8639-
switch (column) {
8640-
case 0:
8641-
switch (row) {
8642-
case 0:
8643-
return m00;
8644-
case 1:
8645-
return m01;
8646-
case 2:
8647-
return m02;
8648-
case 3:
8649-
return m03;
8650-
default:
8651-
break;
8652-
}
8653-
break;
8654-
case 1:
8655-
switch (row) {
8656-
case 0:
8657-
return m10;
8658-
case 1:
8659-
return m11;
8660-
case 2:
8661-
return m12;
8662-
case 3:
8663-
return m13;
8664-
default:
8665-
break;
8666-
}
8667-
break;
8668-
case 2:
8669-
switch (row) {
8670-
case 0:
8671-
return m20;
8672-
case 1:
8673-
return m21;
8674-
case 2:
8675-
return m22;
8676-
case 3:
8677-
return m23;
8678-
default:
8679-
break;
8680-
}
8681-
break;
8682-
case 3:
8683-
switch (row) {
8684-
case 0:
8685-
return m30;
8686-
case 1:
8687-
return m31;
8688-
case 2:
8689-
return m32;
8690-
case 3:
8691-
return m33;
8692-
default:
8693-
break;
8694-
}
8695-
break;
8696-
default:
8697-
break;
8698-
}
8699-
throw new IllegalArgumentException();
8639+
return MemUtil.INSTANCE.get(this, column, row);
87008640
}
87018641

87028642
/**
@@ -8711,131 +8651,11 @@ public double get(int column, int row) {
87118651
* @return this
87128652
*/
87138653
public Matrix4d set(int column, int row, double value) {
8714-
switch (column) {
8715-
case 0:
8716-
switch (row) {
8717-
case 0:
8718-
return m00(value);
8719-
case 1:
8720-
return m01(value);
8721-
case 2:
8722-
return m02(value);
8723-
case 3:
8724-
return m03(value);
8725-
default:
8726-
break;
8727-
}
8728-
break;
8729-
case 1:
8730-
switch (row) {
8731-
case 0:
8732-
return m10(value);
8733-
case 1:
8734-
return m11(value);
8735-
case 2:
8736-
return m12(value);
8737-
case 3:
8738-
return m13(value);
8739-
default:
8740-
break;
8741-
}
8742-
break;
8743-
case 2:
8744-
switch (row) {
8745-
case 0:
8746-
return m20(value);
8747-
case 1:
8748-
return m21(value);
8749-
case 2:
8750-
return m22(value);
8751-
case 3:
8752-
return m23(value);
8753-
default:
8754-
break;
8755-
}
8756-
break;
8757-
case 3:
8758-
switch (row) {
8759-
case 0:
8760-
return m30(value);
8761-
case 1:
8762-
return m31(value);
8763-
case 2:
8764-
return m32(value);
8765-
case 3:
8766-
return m33(value);
8767-
default:
8768-
break;
8769-
}
8770-
break;
8771-
default:
8772-
break;
8773-
}
8774-
throw new IllegalArgumentException();
8654+
return MemUtil.INSTANCE.set(this, column, row, value);
87758655
}
87768656

87778657
public double getRowColumn(int row, int column) {
8778-
switch (row) {
8779-
case 0:
8780-
switch (column) {
8781-
case 0:
8782-
return m00;
8783-
case 1:
8784-
return m01;
8785-
case 2:
8786-
return m02;
8787-
case 3:
8788-
return m03;
8789-
default:
8790-
break;
8791-
}
8792-
break;
8793-
case 1:
8794-
switch (column) {
8795-
case 0:
8796-
return m10;
8797-
case 1:
8798-
return m11;
8799-
case 2:
8800-
return m12;
8801-
case 3:
8802-
return m13;
8803-
default:
8804-
break;
8805-
}
8806-
break;
8807-
case 2:
8808-
switch (column) {
8809-
case 0:
8810-
return m20;
8811-
case 1:
8812-
return m21;
8813-
case 2:
8814-
return m22;
8815-
case 3:
8816-
return m23;
8817-
default:
8818-
break;
8819-
}
8820-
break;
8821-
case 3:
8822-
switch (column) {
8823-
case 0:
8824-
return m30;
8825-
case 1:
8826-
return m31;
8827-
case 2:
8828-
return m32;
8829-
case 3:
8830-
return m33;
8831-
default:
8832-
break;
8833-
}
8834-
break;
8835-
default:
8836-
break;
8837-
}
8838-
throw new IllegalArgumentException();
8658+
return MemUtil.INSTANCE.get(this, column, row);
88398659
}
88408660

88418661
/**
@@ -8850,83 +8670,7 @@ public double getRowColumn(int row, int column) {
88508670
* @return this
88518671
*/
88528672
public Matrix4d setRowColumn(int row, int column, double value) {
8853-
switch (row) {
8854-
case 0:
8855-
switch (column) {
8856-
case 0:
8857-
this.m00 = value;
8858-
return this;
8859-
case 1:
8860-
this.m01 = value;
8861-
return this;
8862-
case 2:
8863-
this.m02 = value;
8864-
return this;
8865-
case 3:
8866-
this.m03 = value;
8867-
return this;
8868-
default:
8869-
break;
8870-
}
8871-
break;
8872-
case 1:
8873-
switch (column) {
8874-
case 0:
8875-
this.m10 = value;
8876-
return this;
8877-
case 1:
8878-
this.m11 = value;
8879-
return this;
8880-
case 2:
8881-
this.m12 = value;
8882-
return this;
8883-
case 3:
8884-
this.m13 = value;
8885-
return this;
8886-
default:
8887-
break;
8888-
}
8889-
break;
8890-
case 2:
8891-
switch (column) {
8892-
case 0:
8893-
this.m20 = value;
8894-
return this;
8895-
case 1:
8896-
this.m21 = value;
8897-
return this;
8898-
case 2:
8899-
this.m22 = value;
8900-
return this;
8901-
case 3:
8902-
this.m23 = value;
8903-
return this;
8904-
default:
8905-
break;
8906-
}
8907-
break;
8908-
case 3:
8909-
switch (column) {
8910-
case 0:
8911-
this.m30 = value;
8912-
return this;
8913-
case 1:
8914-
this.m31 = value;
8915-
return this;
8916-
case 2:
8917-
this.m32 = value;
8918-
return this;
8919-
case 3:
8920-
this.m33 = value;
8921-
return this;
8922-
default:
8923-
break;
8924-
}
8925-
break;
8926-
default:
8927-
break;
8928-
}
8929-
throw new IllegalArgumentException();
8673+
return MemUtil.INSTANCE.set(this, column, row, value);
89308674
}
89318675

89328676
/**

0 commit comments

Comments
 (0)