From c88b390a037dcb9c52d12c243b424c83d671bb57 Mon Sep 17 00:00:00 2001 From: Luke Bollam Date: Wed, 1 Sep 2021 11:32:59 +0800 Subject: [PATCH] adding saved model cleanup benchmark --- .../Leak/SavedModelCleanup.cs | 31 ++++++++++++++++++ .../Leak/TestModel/saved_model/saved_model.pb | Bin 0 -> 24775 bytes .../variables/variables.data-00000-of-00001 | Bin 0 -> 1465 bytes .../saved_model/variables/variables.index | Bin 0 -> 274 bytes .../Tensorflow.Benchmark.csproj | 16 +++++++++ 5 files changed, 47 insertions(+) create mode 100644 src/TensorFlowNet.Benchmarks/Leak/SavedModelCleanup.cs create mode 100644 src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/saved_model.pb create mode 100644 src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/variables/variables.data-00000-of-00001 create mode 100644 src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/variables/variables.index diff --git a/src/TensorFlowNet.Benchmarks/Leak/SavedModelCleanup.cs b/src/TensorFlowNet.Benchmarks/Leak/SavedModelCleanup.cs new file mode 100644 index 00000000..e9e1e75f --- /dev/null +++ b/src/TensorFlowNet.Benchmarks/Leak/SavedModelCleanup.cs @@ -0,0 +1,31 @@ +using BenchmarkDotNet.Attributes; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace Tensorflow.Benchmark.Leak +{ + + public class SavedModelCleanup + { + [Benchmark] + public void Run() + { + var modelDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + var ClassifierModelPath = Path.Combine(modelDir, "Leak", "TestModel", "saved_model"); + + for (var i = 0; i < 1000; i++) + { + var session = Session.LoadFromSavedModel(ClassifierModelPath); + + session.graph.Exit(); + session.graph.Dispose(); + session.Dispose(); + } + } + } +} diff --git a/src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/saved_model.pb b/src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/saved_model.pb new file mode 100644 index 0000000000000000000000000000000000000000..f75f28564731f1d6bf48b02c41d8d304881b5e70 GIT binary patch literal 24775 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 literal 0 HcmV?d00001 diff --git a/src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/variables/variables.data-00000-of-00001 b/src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/variables/variables.data-00000-of-00001 new file mode 100644 index 0000000000000000000000000000000000000000..4c7f99dbacb2456aa9893d404a996e02b588ce42 GIT binary patch literal 1465 zcmd0sf7fo;&Zm18GMwF8>)O2UbGzKW9YwUfyiBZ4+N(w3O@)7L z|Jyv@>$p_Vj{n`eV;SlSaFL zzuN7VXlC0b&MLOuw>H%F`b9BYkIRvEzcp{~6|VkZyYX&=-T8k>`&OE7+S?nt$*$Te z&h9~Q!@jyTEc>i_x$QbdlkK`@G43t3kJ`7B*~2cFeTtoMv9sOI=PI^7(Fbg!C!gMv z@pH|dAJeOLd3v3;{a3?jJEPrf?>pv|dv|WqvTeNnW{)bf$zBE^XnbR`C+CLh-cJsF zyC2K3?ETDc@Y92htC5k5n}bn^JuNe*B(3I z6Ec7b1ccat?#xTg0Xjuch$SgAu^8wSAzV%o#_bdlRHuj{+s4Pm3bcvQ07wZ6F&YBx zMi*Jj$R)@jCd8YQSeaTBpPLGdkYtcca0H4xhq#b5L@oB9AwJZkIV6O{^MH|!E%3QH zB!$>vuHoX45@G{eTFk`{418&1FEVh23I%iVg*gU!Iy(8d#)mojgt`g|0+WY6DEtjm z^daFar3XzhU}31BzMf-9NRX#fXozdDKB^I1fkOTm#_}T>3yLx+9TY=BLimhC4}2Wa tA%htmI1+|Dhb*D!AU5SlbI9R~4teD0P=H4VEJv{eQy3>Gp}_=zGytKt^)dhe literal 0 HcmV?d00001 diff --git a/src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/variables/variables.index b/src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/variables/variables.index new file mode 100644 index 0000000000000000000000000000000000000000..ee0efb7c0c418c80c8493ce4c605384820ba484e GIT binary patch literal 274 zcmZQzVB=tvV&Y(Akl~Ma_HcFf4)FK%3vqPvagFzP@^W + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + +