void benchFilter(const std::vector<byte>& data) { CM<kCMTypeMax> comp(6); // data = randomArray(kBenchDataSize); check(!data.empty()); const uint64_t expected_sum = std::accumulate(data.begin(), data.end(), 0UL); std::vector<byte> out_data; out_data.resize(20 * MB + static_cast<uint32_t>(data.size() * FilterType::getMaxExpansion() * 1.2)); uint64_t start = clock(); uint64_t write_count; uint64_t old_sum = 0; uint32_t best_size = std::numeric_limits<uint32_t>::max(); uint32_t best_spec; for (uint32_t i = 0; i < kIterations; ++i) { WriteMemoryStream wms(&out_data[0]); ReadMemoryStream rms(&data); FilterType f(&rms); // , 1 + (i & 3), 1 + (i / 4)); // f.setSpecific(100 + i); comp.setOpt(i); clock_t start = clock(); comp.compress(&f, &wms, std::numeric_limits<uint64_t>::max()); write_count = wms.tell(); f.dumpInfo(); if (write_count < best_size) { best_size = static_cast<uint32_t>(write_count); best_spec = i; } std::cout << "Cur=" << i << " size=" << write_count << " best(" << best_spec << ")=" << best_size << " time=" << clock() - start << std::endl; #if 0 uint64_t checksum = std::accumulate(&out_data[0], &out_data[write_count], 0UL); if (old_sum != 0) { check(old_sum == checksum); } old_sum = checksum; #endif } std::cout << "Forward: " << data.size() << "->" << write_count << " rate=" << prettySize(computeRate(data.size() * kIterations, clock() - start)) << "/S" << std::endl; std::vector<byte> result; result.resize(data.size()); start = clock(); for (uint32_t i = 0; i < kIterations; ++i) { WriteMemoryStream wvs(&result[0]); FilterType reverse_filter(&wvs); comp.decompress(&ReadMemoryStream(&out_data[0], &out_data[0] + write_count), &reverse_filter, std::numeric_limits<uint64_t>::max()); reverse_filter.flush(); } uint64_t rate = computeRate(data.size() * kIterations, clock() - start); std::cout << "Reverse: " << prettySize(rate) << "/S" << std::endl; // Check tht the shit matches. check(result.size() == data.size()); for (uint32_t i = 0; i < data.size(); ++i) { check(result[i] == data[i]); } }
QByteArray DirectoryLister::html(const QString & root, const QString & _path) { kpfDebug << "root: " << root << " path: " << _path << endl; QString path; if (_path.right(1) != "/") path = _path + "/"; else path = _path; if (path[0] == '/') path + ""; QDir d(root + path); if (!d.exists()) { return buildHTML ( i18n("Error"), i18n("Directory does not exist: %1 %2").arg(root).arg(path) ); } const QFileInfoList * infoList = d.entryInfoList(QDir::DefaultFilter, QDir::Name | QDir::DirsFirst); if (0 == infoList) { return buildHTML ( i18n("Error"), i18n("Directory unreadable: %1 %2").arg(root).arg(path) ); } QString html; html += "<table"; html += " width=\"100%\""; html += " class=\"filelist\">\n"; html += "<tr>\n"; html += "<th align=\"left\" class=\"listheading\">Name</th>\n"; html += "<th align=\"left\" class=\"listheading\">Size</th>\n"; html += "</tr>\n"; for (QFileInfoListIterator it(*infoList); it.current(); ++it) { static int counter = 0; QFileInfo * fi(it.current()); if ( (fi->fileName()[0] == '.') && ((fi->fileName() != "..") || path == "/") ) { // Don't show hidden files continue; } ++counter; QString td_class = (counter % 2) ? "alt" : "norm"; html += "<tr>\n"; html += "<td class=\"" + td_class + "\">"; QString item_class = QString((fi->isDir()) ? "direntry" : "fileentry"); KURL fu(path+fi->fileName()); html += "<a href=\"" + fu.encodedPathAndQuery() + (fi->isDir() ? "/" : "") + "\" class=\"" + item_class + "\">"; if (fi->fileName() != "..") html += QStyleSheet::escape(fi->fileName()); else html += i18n("Parent Directory"); html += "</a>"; if (fi->isDir()) html += "/"; html += "</td>\n"; html += "<td class=\"" + td_class + "\">"; if (!fi->isDir()) html += "<div class=\"sizeentry\">" + prettySize(fi->size()) + "</div>"; html += "</td>\n"; html += "</tr>\n"; } html += "</table>\n"; return buildHTML ( i18n("Directory listing for %1").arg(QStyleSheet::escape(path)), html ); }