mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-04 21:54:27 +08:00
85 lines
2.6 KiB
C#
85 lines
2.6 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using GraphMolWrap;
|
|
using Xunit;
|
|
|
|
namespace RdkitTests
|
|
{
|
|
public class ToMolMemoryTest
|
|
{
|
|
private static readonly long hundredMB = 1024 * 1024 * 100;
|
|
|
|
private static void gc()
|
|
{
|
|
GC.Collect();
|
|
GC.WaitForPendingFinalizers();
|
|
GC.Collect();
|
|
}
|
|
|
|
|
|
[Fact]
|
|
public void TestSmilesToMolMemoryUsage()
|
|
{
|
|
string smi =
|
|
"CC(C)C[C@H](NC(=O)[C@H](CC(=O)O)NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@H](CO)NC(=O)[C@@H]1CCCN1C(=O)[C@H](CCC(N)=O)NC(=O)[C@@H](N)CS)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CS)C(=O)O";
|
|
|
|
var before = Process.GetCurrentProcess().VirtualMemorySize64;
|
|
long after;
|
|
for (int i = 0; i < 10000; ++i)
|
|
{
|
|
using RWMol mol = RDKFuncs.SmilesToMol(smi);
|
|
mol?.Dispose();
|
|
if (i % 1000 == 0)
|
|
{
|
|
gc();
|
|
after = Process.GetCurrentProcess().VirtualMemorySize64;
|
|
Assert.True(after - before < hundredMB);
|
|
}
|
|
}
|
|
|
|
gc();
|
|
after = Process.GetCurrentProcess().VirtualMemorySize64;
|
|
Assert.True(after - before < hundredMB);
|
|
}
|
|
|
|
[Fact]
|
|
public void TestMolBlockToMolMemoryUsage()
|
|
{
|
|
var block = @"
|
|
RDKit 2D
|
|
|
|
6 6 0 0 0 0 0 0 0 0999 V2000
|
|
1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
|
|
0.7500 -1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
|
|
-0.7500 -1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
|
|
-1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
|
|
-0.7500 1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
|
|
0.7500 1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
|
|
1 2 2 0
|
|
2 3 1 0
|
|
3 4 2 0
|
|
4 5 1 0
|
|
5 6 2 0
|
|
6 1 1 0
|
|
M END
|
|
";
|
|
var before = Process.GetCurrentProcess().VirtualMemorySize64;
|
|
long after;
|
|
for (int i = 0; i < 10000; ++i)
|
|
{
|
|
using RWMol mol = RDKFuncs.MolBlockToMol(block);
|
|
mol?.Dispose();
|
|
if (i % 1000 == 0)
|
|
{
|
|
gc();
|
|
after = Process.GetCurrentProcess().VirtualMemorySize64;
|
|
Assert.True(after - before < hundredMB);
|
|
}
|
|
}
|
|
|
|
gc();
|
|
after = System.Diagnostics.Process.GetCurrentProcess().PeakVirtualMemorySize64;
|
|
Assert.True(after - before < hundredMB);
|
|
}
|
|
}
|
|
} |