def updateTable(self): if not self.treeWidget.isVisible(): return treeWidget = self.treeWidget treeWidget.clear() analysis = profiler.getProfiler().analyze() tree = analysis["root"] accountedTime = sum(subleaf.totalTime for subleaf in tree.itervalues()) if accountedTime < tree.totalTime and len(tree.items()): selfTime = tree.totalTime - accountedTime else: selfTime = 0 if tree.totalTime: selfPercent = selfTime / tree.totalTime * 100 else: selfPercent = 0 root = QtGui.QTreeWidgetItem(["root", "%.2f" % tree.totalTime, "%.1f%%" % selfPercent, "100%", "1", "%0.3f ms" % (1000 * tree.totalTime) ]) def processNode(node, item): items = node.items() sortedItems = sorted(items, key=lambda (name, leaf): leaf.totalTime, reverse=True) for name, leaf in sortedItems: if tree.totalTime: percentOfTotal = leaf.totalTime / tree.totalTime * 100 else: percentOfTotal = 0 accountedTime = sum(subleaf.totalTime for subleaf in leaf.itervalues()) if accountedTime < leaf.totalTime and len(items): selfTime = leaf.totalTime - accountedTime else: selfTime = 0 selfPercent = 100 if tree.totalTime == 0 else (selfTime / tree.totalTime * 100) leafItem = QtGui.QTreeWidgetItem([name, "%.2f" % leaf.totalTime, "%.1f%%" % selfPercent, "%.1f%%" % percentOfTotal, "%d" % leaf.ncalls, "%0.3f ms" % (0 if leaf.ncalls == 0 else (1000 * leaf.totalTime / leaf.ncalls))]) item.addChild(leafItem) processNode(leaf, leafItem) processNode(tree, root) treeWidget.addTopLevelItem(root) treeWidget.expandAll() for i in range(treeWidget.columnCount()): treeWidget.resizeColumnToContents(i)
def recieveChunk(self, chunk): t = time.time() if self.lastAutoUpdate + self.autoUpdateInterval < t: self.lastAutoUpdate = t log.debug("update(): receivedChunk %s %s", self, chunk) self.update() with profiler.getProfiler().context("preloadCulling"): if hasattr(self, 'frustum'): cx, cz = chunk.chunkPosition points = [(cx * 16 + 8, h + 8, cz * 16 + 8, 1.0) for h in chunk.sectionPositions()] points = numpy.array(points) visibleSections = self.frustum.visible(points, radius=8 * math.sqrt(2)) else: visibleSections = None return self.worldScene.workOnChunk(chunk, visibleSections)
def updateTable(self): if not self.treeWidget.isVisible(): return treeWidget = self.treeWidget treeWidget.clear() analysis = profiler.getProfiler().analyze() tree = analysis["root"] accountedTime = sum(subleaf.totalTime for subleaf in tree.itervalues()) if accountedTime < tree.totalTime and len(tree.items()): selfTime = tree.totalTime - accountedTime else: selfTime = 0 if tree.totalTime: selfPercent = selfTime / tree.totalTime * 100 else: selfPercent = 0 root = QtGui.QTreeWidgetItem([ "root", "%.2f" % tree.totalTime, "%.1f%%" % selfPercent, "100%", "1", "%0.3f ms" % (1000 * tree.totalTime) ]) def processNode(node, item): items = node.items() sortedItems = sorted(items, key=lambda (name, leaf): leaf.totalTime, reverse=True) for name, leaf in sortedItems: if tree.totalTime: percentOfTotal = leaf.totalTime / tree.totalTime * 100 else: percentOfTotal = 0 accountedTime = sum(subleaf.totalTime for subleaf in leaf.itervalues()) if accountedTime < leaf.totalTime and len(items): selfTime = leaf.totalTime - accountedTime else: selfTime = 0 selfPercent = 100 if tree.totalTime == 0 else (selfTime / tree.totalTime * 100) leafItem = QtGui.QTreeWidgetItem([ name, "%.2f" % leaf.totalTime, "%.1f%%" % selfPercent, "%.1f%%" % percentOfTotal, "%d" % leaf.ncalls, "%0.3f ms" % (0 if leaf.ncalls == 0 else (1000 * leaf.totalTime / leaf.ncalls)) ]) item.addChild(leafItem) processNode(leaf, leafItem) processNode(tree, root) treeWidget.addTopLevelItem(root) treeWidget.expandAll() for i in range(treeWidget.columnCount()): treeWidget.resizeColumnToContents(i)