Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)