diff options
author | Simon Obute <simon.obute@arm.com> | 2022-04-14 15:49:52 +0100 |
---|---|---|
committer | Jim Flynn <jim.flynn@arm.com> | 2022-04-21 12:22:14 +0000 |
commit | db5804e96b43a869346f70d277ce12a705c5147b (patch) | |
tree | d9ec20bf607f32f422a6d4ee19abea9f8f3a2f65 | |
parent | e198c5a5a85df386a3f5639f25c80ab43f40fb46 (diff) | |
download | armnn-db5804e96b43a869346f70d277ce12a705c5147b.tar.gz |
MLCE-118 Github: loading file in ArmnnDeserializer is quite slow
* Use read() to load model from disk
Signed-off-by: Simon Obute <simon.obute@arm.com>
Change-Id: I0321fa7716e1887b59063429da7e5a2e66aebe83
-rw-r--r-- | src/armnnDeserializer/Deserializer.cpp | 13 |
1 files 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 <armnn/TypesUtils.hpp> #include <armnn/LstmParams.hpp> #include <armnn/QuantizedLstmParams.hpp> +#include <armnn/Logging.hpp> #include <armnnUtils/Permute.hpp> #include <armnnUtils/Transpose.hpp> @@ -816,8 +817,16 @@ INetworkPtr IDeserializer::DeserializerImpl::CreateNetworkFromBinary(const std:: armnn::INetworkPtr IDeserializer::DeserializerImpl::CreateNetworkFromBinary(std::istream& binaryContent) { ResetParser(); - std::vector<uint8_t> content((std::istreambuf_iterator<char>(binaryContent)), std::istreambuf_iterator<char>()); - 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<char> content(static_cast<size_t>(size)); + binaryContent.seekg(0); + binaryContent.read(content.data(), static_cast<std::streamsize>(size)); + GraphPtr graph = LoadGraphFromBinary(reinterpret_cast<uint8_t*>(content.data()), static_cast<size_t>(size)); return CreateNetworkFromGraph(graph); } |