Skip to content

Commit

Permalink
included base64sve in benchmark
Browse files Browse the repository at this point in the history
  • Loading branch information
vogma committed Oct 10, 2024
1 parent 9d46a4a commit 0538aad
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ aux_source_directory(./src/boost CTR_SOURCES)

add_subdirectory(./libs/base64sve/)
include_directories(libs/base64sve/lib/include)
AUX_SOURCE_DIRECTORY(./src/base64sve CTR_SOURCES)

set_source_files_properties( ${CTR_SOURCES} PROPERTIES LANGUAGE CXX )
set_source_files_properties( ${C_SOURCES} PROPERTIES LANGUAGE C )
Expand Down
55 changes: 55 additions & 0 deletions src/base64sve/base64sve.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#include <gtest/gtest.h>
#include "../Base64SurveyRegistry.hpp"
#include "base64sve/lib/include/base64sve.h"

struct BASE64SVE_Adapt
{

static constexpr inline size_t GetDecodeExpectedLen(size_t inLen) noexcept
{
return ((inLen + 3) / 4) * 3;
}

static constexpr inline size_t GetEncodeLen(size_t inLen) noexcept
{
return ((inLen + 2) / 3) * 4;
}

static std::string encode(void (*func)(void *in, char *out, size_t inlen), const std::string &bytes)
{
size_t encLen = GetEncodeLen(bytes.length());
std::string encoded;
encoded.resize(encLen);
func((void *)&bytes[0], &encoded[0], bytes.length());
// void base64_encode(void *input, char *output, size_t length);

return encoded;
}

static std::string decode(void (*func)(char *in, void *out, size_t inlen, size_t *decoded_length), const std::string &encoded)
{
std::string decoded;
decoded.resize(GetDecodeExpectedLen(encoded.length()));
size_t dLen = 0;
func((char *)&encoded[0], (int8_t *)&decoded[0], (size_t)encoded.length(), &dLen);
// void base64_decode(char *base64_data, void *output, size_t encoded_length, size_t *decoded_length);
decoded.resize(dLen);
return decoded;
}
};

struct base64sve
{
std::string encode(const std::string &bytes)
{
return BASE64SVE_Adapt::encode(base64_encode, bytes);
}

std::string decode(const std::string &base64)
{
return BASE64SVE_Adapt::decode(base64_decode, base64);
}
};

BASE64_REGISTER_ENCODER(base64sve);
BASE64_REGISTER_DECODER(base64sve);

0 comments on commit 0538aad

Please sign in to comment.