Ejemplo n.º 1
0
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]);
	}
}
Ejemplo n.º 2
0
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
           );
}