aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Obute <simon.obute@arm.com>2022-04-14 15:49:52 +0100
committerJim Flynn <jim.flynn@arm.com>2022-04-21 12:22:14 +0000
commitdb5804e96b43a869346f70d277ce12a705c5147b (patch)
treed9ec20bf607f32f422a6d4ee19abea9f8f3a2f65
parente198c5a5a85df386a3f5639f25c80ab43f40fb46 (diff)
downloadarmnn-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.cpp13
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);
}