summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2023-07-29 14:16:09 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2023-07-29 14:16:09 +0100
commitdfbf7c6f30ce1b01cff23c364b7951b7e7f2e483 (patch)
tree0dffc674c92be8418279fa6580b47b60f5faf7b0
parentCentralise lots of value conversion functions (diff)
downloadicespider-dfbf7c6f30ce1b01cff23c364b7951b7e7f2e483.tar.bz2
icespider-dfbf7c6f30ce1b01cff23c364b7951b7e7f2e483.tar.xz
icespider-dfbf7c6f30ce1b01cff23c364b7951b7e7f2e483.zip
getURLParam needn't go through the optional helpers
-rw-r--r--icespider/core/ihttpRequest.cpp2
-rw-r--r--icespider/core/ihttpRequest.h4
-rw-r--r--icespider/unittests/testPerf.cpp9
3 files changed, 12 insertions, 3 deletions
diff --git a/icespider/core/ihttpRequest.cpp b/icespider/core/ihttpRequest.cpp
index 64a891d..461fc9e 100644
--- a/icespider/core/ihttpRequest.cpp
+++ b/icespider/core/ihttpRequest.cpp
@@ -132,7 +132,7 @@ namespace IceSpider {
}
}
- OptionalString
+ std::string_view
IHttpRequest::getURLParamStr(const unsigned int idx) const
{
auto & url = getRequestPath();
diff --git a/icespider/core/ihttpRequest.h b/icespider/core/ihttpRequest.h
index 6876c2b..2b4ac02 100644
--- a/icespider/core/ihttpRequest.h
+++ b/icespider/core/ihttpRequest.h
@@ -46,7 +46,7 @@ namespace IceSpider {
[[nodiscard]] virtual PathElements & getRequestPath() = 0;
[[nodiscard]] virtual HttpMethod getRequestMethod() const = 0;
- [[nodiscard]] OptionalString getURLParamStr(const unsigned int) const;
+ [[nodiscard]] std::string_view getURLParamStr(const unsigned int) const;
[[nodiscard]] virtual OptionalString getQueryStringParamStr(const std::string_view) const = 0;
[[nodiscard]] virtual OptionalString getHeaderParamStr(const std::string_view) const = 0;
[[nodiscard]] virtual OptionalString getCookieParamStr(const std::string_view) const = 0;
@@ -77,7 +77,7 @@ namespace IceSpider {
[[nodiscard]] T
getURLParam(unsigned int n) const
{
- return *getFrom<T, unsigned int>(n, &IHttpRequest::getURLParamStr);
+ return convert<T>(getURLParamStr(n));
}
template<typename T>
diff --git a/icespider/unittests/testPerf.cpp b/icespider/unittests/testPerf.cpp
index 04e5deb..215ea46 100644
--- a/icespider/unittests/testPerf.cpp
+++ b/icespider/unittests/testPerf.cpp
@@ -102,6 +102,15 @@ BENCHMARK_F(CoreFixture, get_query_string_param_int)(benchmark::State & state)
}
}
+BENCHMARK_F(CoreFixture, get_url_param)(benchmark::State & state)
+{
+ CharPtrPtrArray env(rootDir / "fixtures/env1");
+ TestRequest r(this, env);
+ for (auto _ : state) {
+ benchmark::DoNotOptimize(r.getURLParam<std::string_view>(0));
+ }
+}
+
BENCHMARK_F(CoreFixture, get_cookie_param)(benchmark::State & state)
{
CharPtrPtrArray env(rootDir / "fixtures/env1");