From db5804e96b43a869346f70d277ce12a705c5147b Mon Sep 17 00:00:00 2001 From: Simon Obute Date: Thu, 14 Apr 2022 15:49:52 +0100 Subject: MLCE-118 Github: loading file in ArmnnDeserializer is quite slow * Use read() to load model from disk Signed-off-by: Simon Obute Change-Id: I0321fa7716e1887b59063429da7e5a2e66aebe83 --- src/armnnDeserializer/Deserializer.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/armnnDeserializer/Deserializer.cpp b/src/armnnDeserializer/Deserializer.cpp index a5114ecfca..11d3542405 100644 --- a/src/armnnDeserializer/Deserializer.cpp +++ b/src/armnnDeserializer/Deserializer.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -816,8 +817,16 @@ INetworkPtr IDeserializer::DeserializerImpl::CreateNetworkFromBinary(const std:: armnn::INetworkPtr IDeserializer::DeserializerImpl::CreateNetworkFromBinary(std::istream& binaryContent) { ResetParser(); - std::vector content((std::istreambuf_iterator(binaryContent)), std::istreambuf_iterator()); - GraphPtr graph = LoadGraphFromBinary(content.data(), content.size()); + if (binaryContent.fail()) { + ARMNN_LOG(error) << (std::string("Cannot read input")); + throw ParseException("Unable to read Input stream data"); + } + binaryContent.seekg(0, std::ios::end); + const std::streamoff size = binaryContent.tellg(); + std::vector content(static_cast(size)); + binaryContent.seekg(0); + binaryContent.read(content.data(), static_cast(size)); + GraphPtr graph = LoadGraphFromBinary(reinterpret_cast(content.data()), static_cast(size)); return CreateNetworkFromGraph(graph); } -- cgit v1.2.1