Rewrite LibXISF to get rid of Qt

This commit is contained in:
2023-03-05 16:53:27 +01:00
parent fad3e31bf8
commit b24bc8ecdd
186 changed files with 78840 additions and 768 deletions
+24 -9
View File
@@ -1,10 +1,25 @@
#include <iostream>
#include <random>
#include <QElapsedTimer>
#include <chrono>
#include "libxisf.h"
using namespace LibXISF;
class Timer
{
std::chrono::high_resolution_clock clock;
std::chrono::high_resolution_clock::time_point startTime;
public:
void start()
{
startTime = clock.now();
}
uint64_t elapsed()
{
return std::chrono::duration_cast<std::chrono::milliseconds>(clock.now() - startTime).count();
}
};
template<typename T>
void benchmarkType(float avg, float stdDev)
{
@@ -20,14 +35,14 @@ void benchmarkType(float avg, float stdDev)
ptr[i] = normalDist(gen);
}
QElapsedTimer timer;
Timer timer;
double baseSize;
{
timer.start();
XISFWriter writer;
writer.writeImage(image);
QByteArray xisfImage;
ByteArray xisfImage;
writer.save(xisfImage);
baseSize = xisfImage.size();
std::cout << "No compression \tElapsed time: " << timer.elapsed() << " " << "ms\tSpeed: "
@@ -38,7 +53,7 @@ void benchmarkType(float avg, float stdDev)
timer.start();
XISFWriter writer;
writer.writeImage(image);
QByteArray xisfImage;
ByteArray xisfImage;
writer.save(xisfImage);
std::cout << "Zlib compression \tElapsed time: " << timer.elapsed() << " " << "ms\tSpeed: "
<< size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << baseSize/xisfImage.size() << std::endl;
@@ -48,7 +63,7 @@ void benchmarkType(float avg, float stdDev)
timer.start();
XISFWriter writer;
writer.writeImage(image);
QByteArray xisfImage;
ByteArray xisfImage;
writer.save(xisfImage);
std::cout << "LZ4 compression \tElapsed time: " << timer.elapsed() << " " << "ms\tSpeed: "
<< size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << baseSize/xisfImage.size() << std::endl;
@@ -58,7 +73,7 @@ void benchmarkType(float avg, float stdDev)
timer.start();
XISFWriter writer;
writer.writeImage(image);
QByteArray xisfImage;
ByteArray xisfImage;
writer.save(xisfImage);
std::cout << "LZ4HC compression \tElapsed time: " << timer.elapsed() << " " << "ms\tSpeed: "
<< size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << baseSize/xisfImage.size() << std::endl;
@@ -69,7 +84,7 @@ void benchmarkType(float avg, float stdDev)
timer.start();
XISFWriter writer;
writer.writeImage(image);
QByteArray xisfImage;
ByteArray xisfImage;
writer.save(xisfImage);
std::cout << "Zlib compression SH \tElapsed time: " << timer.elapsed() << " " << "ms\tSpeed: "
<< size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << baseSize/xisfImage.size() << std::endl;
@@ -79,7 +94,7 @@ void benchmarkType(float avg, float stdDev)
timer.start();
XISFWriter writer;
writer.writeImage(image);
QByteArray xisfImage;
ByteArray xisfImage;
writer.save(xisfImage);
std::cout << "LZ4 compression SH \tElapsed time: " << timer.elapsed() << " " << "ms\tSpeed: "
<< size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << baseSize/xisfImage.size() << std::endl;
@@ -89,7 +104,7 @@ void benchmarkType(float avg, float stdDev)
timer.start();
XISFWriter writer;
writer.writeImage(image);
QByteArray xisfImage;
ByteArray xisfImage;
writer.save(xisfImage);
std::cout << "LZ4HC compression SH\tElapsed time: " << timer.elapsed() << " " << "ms\tSpeed: "
<< size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << baseSize/xisfImage.size() << std::endl;
+9 -6
View File
@@ -54,15 +54,18 @@ int main(int argc, char **argv)
m(0, 2) = 2;
m(1, 0) = 10;
image.addProperty(Property("UI16Matrix", m));
std::tm tm = {12, 22, 23, 1, 2, 2023, 0, 0, 0, 0, 0};
image.addProperty(Property("TimeObs", tm));
image.addFITSKeyword({"RA", "226.9751163116387", "Right ascension of the center of the image (deg)"});
image.addFITSKeyword({"DEC", "62.02302376908295", "Declination of the center of the image (deg)"});
image.setCompression(DataBlock::Zlib, 9);
writer.writeImage(image);
image.setImageType(Image::Flat);
image.setCompression(DataBlock::LZ4);
image.setByteshuffling(true);
writer.writeImage(image);
QByteArray data;
ByteArray data;
std::cout << "Saving image" << std::endl;
writer.save(data);
@@ -71,19 +74,19 @@ int main(int argc, char **argv)
reader.open(data);
const Image &img0 = reader.getImage(0);
const Image &img1 = reader.getImage(1);
auto &prop0 = img0.imageProperties();
TEST(image.imageProperties().size() != img0.imageProperties().size(), "Property count doesn't match");
//TEST(image.imageDataSize() != img0._dataBlock.data, "Images doesn't match");
//TEST(img0._dataBlock.data != img1._dataBlock.data, "Images doesn't match");
TEST(std::memcmp(image.imageData(), img0.imageData(), image.imageDataSize()), "Images doesn't match");
TEST(std::memcmp(image.imageData(), img1.imageData(), image.imageDataSize()), "Images doesn't match");
}
else if(argc == 2 && argv[1] == QString("bench"))
else if(argc == 2 && std::strcmp(argv[1], "bench") == 0)
{
benchmark();
}
else
{
LibXISF::XISFReader reader;
reader.open(QString(argv[1]));
reader.open(argv[1]);
TEST(reader.imagesCount() != 1, "No image");
const LibXISF::Image &image = reader.getImage(0);