On 12/10/06, Linus Torvalds <torvalds@osdl.org> wrote:Ok. Perhaps I'm doing something wrong but the following code it's always 10% slower then the temporary file one (4.7s against 4.3s for linux tree) bool DataLoader::start(const QStringList& args, const QString& workDir) { QDir::setCurrent(workDir); _file = popen(args.join(" ").ascii(), "r"); if (!_file) return false; loadTime.start(); guiUpdateTimer.start(10, true); // will call on_timeout() in 10ms return true; } void DataLoader::on_timeout() { if (canceling) deleteLater(); // int fd = fileno(_file); // read() case ssize_t len = 0; while (1) { QByteArray* ba = new QByteArray(FILE_BLOCK_SIZE); // 64KB // len = read(fd, ba->data(), ba->size()); // read() case len = fread(ba->data(), 1, ba->size(), _file); // fread() case if (len <= 0) { delete ba; break; } else if (len < (ssize_t)ba->size()) // very rare, 4 out of 40000 on Linux tree ba->resize(len); loadedBytes += len; fh->rowData.append(ba); // fh->rowData it's a pointer's list parseSingleBuffer(ba); // avoid reading small chunks if data producer is still running if (len < FILE_BLOCK_SIZE) break; } // if (len == 0) { // read() case if (feof(_file)) { // fread() case emit loaded(fh, loadedBytes, loadTime.elapsed(), true, "", ""); // show some stats pclose(_file); _file = NULL; deleteLater(); } else guiUpdateTimer.start(100, true); // next read in 100ms } Uncomment 'read() case' lines and comment out the 'fread case()' ones and you have a way slooooower code, about 10 times slower! Marco - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Tony Lindgren | [PATCH 26/90] ARM: OMAP: abstract debug card setup (smc, leds) |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Vladislav Bolkhovitin | Re: Integration of SCST in the mainstream Linux kernel |
| Jesper Juhl | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
git: | |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Frans Pop | svc: failed to register lockdv1 RPC service (errno 97). |
