mirror of
https://github.com/tsolomko/SWCompression.git
synced 2026-06-23 14:56:41 +00:00
56 lines
1.6 KiB
Swift
56 lines
1.6 KiB
Swift
// Copyright (c) 2018 Timofey Solomko
|
|
// Licensed under MIT License
|
|
//
|
|
// See LICENSE for license information
|
|
|
|
import Foundation
|
|
import SWCompression
|
|
import SwiftCLI
|
|
|
|
#if os(Linux)
|
|
import CoreFoundation
|
|
#endif
|
|
|
|
class CompDeflate: Command {
|
|
|
|
let name = "comp-deflate"
|
|
let shortDescription = "Performs benchmarking of Deflate compression using specified files"
|
|
|
|
let files = CollectedParameter()
|
|
|
|
func execute() throws {
|
|
print("Deflate Compression Benchmark")
|
|
print("=============================")
|
|
|
|
for file in self.files.value {
|
|
print("File: \(file)\n")
|
|
|
|
let inputURL = URL(fileURLWithPath: file)
|
|
let fileData = try Data(contentsOf: inputURL, options: .mappedIfSafe)
|
|
|
|
var totalTime: Double = 0
|
|
|
|
var maxTime = Double(Int.min)
|
|
var minTime = Double(Int.max)
|
|
|
|
for i in 1...6 {
|
|
print("Iteration \(i): ", terminator: "")
|
|
let startTime = CFAbsoluteTimeGetCurrent()
|
|
_ = Deflate.compress(data: fileData)
|
|
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
|
|
print(String(format: "%.3f", timeElapsed))
|
|
totalTime += timeElapsed
|
|
if timeElapsed > maxTime {
|
|
maxTime = timeElapsed
|
|
}
|
|
if timeElapsed < minTime {
|
|
minTime = timeElapsed
|
|
}
|
|
}
|
|
print(String(format: "\nAverage time: %.3f \u{B1} %.3f", totalTime / 6, (maxTime - minTime) / 2))
|
|
print("----------------------------------")
|
|
}
|
|
}
|
|
|
|
}
|