Eliminate Array.Copy GC in SquareMatrix.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using UnsafeIL;
|
||||||
|
|
||||||
namespace Cryville.Common.Math {
|
namespace Cryville.Common.Math {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -44,7 +44,7 @@ namespace Cryville.Common.Math {
|
|||||||
/// <param name="o">The column operator.</param>
|
/// <param name="o">The column operator.</param>
|
||||||
public void Eliminate<T>(ColumnVector<T> v, ColumnVector<T> result, IVectorOperator<T> o) {
|
public void Eliminate<T>(ColumnVector<T> v, ColumnVector<T> result, IVectorOperator<T> o) {
|
||||||
int s = Size;
|
int s = Size;
|
||||||
Array.Copy(content, buffer, Size * Size);
|
FillBuffer();
|
||||||
for (int i = 0; i < s; i++) refl[i] = i;
|
for (int i = 0; i < s; i++) refl[i] = i;
|
||||||
for (int r = 0; r < s; r++) {
|
for (int r = 0; r < s; r++) {
|
||||||
for (int r0 = r; r0 < s; r0++)
|
for (int r0 = r; r0 < s; r0++)
|
||||||
@@ -73,6 +73,11 @@ namespace Cryville.Common.Math {
|
|||||||
result[refl[r2]] = v2;
|
result[refl[r2]] = v2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
unsafe void FillBuffer() {
|
||||||
|
fixed (void* ptrc = content, ptrb = buffer) {
|
||||||
|
Unsafe.CopyBlock(ptrb, ptrc, (uint)(Size * Size * sizeof(float)));
|
||||||
|
}
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a square matrix and fills it with polynomial coefficients.
|
/// Creates a square matrix and fills it with polynomial coefficients.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user