mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
add stats for elements and entities per incoming packet
This commit is contained in:
parent
b568e895ec
commit
0c0b8dbbc1
7 changed files with 51 additions and 7 deletions
|
@ -52,6 +52,8 @@ OctreeStatsDialog::OctreeStatsDialog(QWidget* parent, NodeToOctreeSceneStats* mo
|
|||
_localElements = AddStatItem("Local Elements");
|
||||
_localElementsMemory = AddStatItem("Elements Memory");
|
||||
_sendingMode = AddStatItem("Sending Mode");
|
||||
|
||||
_entityPackets = AddStatItem("Entity Packets");
|
||||
_entityUpdateTime = AddStatItem("Entity Update Time");
|
||||
_entityUpdates = AddStatItem("Entity Updates");
|
||||
|
||||
|
@ -207,11 +209,27 @@ void OctreeStatsDialog::paintEvent(QPaintEvent* event) {
|
|||
"Leaves: " << qPrintable(serversLeavesString) << "";
|
||||
label->setText(statsValue.str().c_str());
|
||||
|
||||
// Entity Edits update time
|
||||
label = _labels[_entityPackets];
|
||||
auto entities = Application::getInstance()->getEntities();
|
||||
auto entitiesTree = entities->getTree();
|
||||
auto averageElementsPerPacket = entities->getAverageElementsPerPacket();
|
||||
auto averageEntitiesPerPacket = entities->getAverageEntitiesPerPacket();
|
||||
|
||||
QString averageElementsPerPacketString = locale.toString(averageElementsPerPacket);
|
||||
QString averageEntitiesPerPacketString = locale.toString(averageEntitiesPerPacket);
|
||||
|
||||
statsValue.str("");
|
||||
statsValue <<
|
||||
"Elements: " << qPrintable(averageEntitiesPerPacketString) << " per packet / " <<
|
||||
"Entities: " << qPrintable(averageEntitiesPerPacketString) << " per packet";
|
||||
|
||||
label->setText(statsValue.str().c_str());
|
||||
|
||||
// Entity Edits update time
|
||||
label = _labels[_entityUpdateTime];
|
||||
auto entities = Application::getInstance()->getEntities()->getTree();
|
||||
auto averageEditDelta = entities->getAverageEditDeltas();
|
||||
auto maxEditDelta = entities->getMaxEditDelta();
|
||||
auto averageEditDelta = entitiesTree->getAverageEditDeltas();
|
||||
auto maxEditDelta = entitiesTree->getMaxEditDelta();
|
||||
|
||||
QString averageEditDeltaString = locale.toString((uint)averageEditDelta);
|
||||
QString maxEditDeltaString = locale.toString((uint)maxEditDelta);
|
||||
|
@ -225,8 +243,8 @@ void OctreeStatsDialog::paintEvent(QPaintEvent* event) {
|
|||
|
||||
// Entity Edits
|
||||
label = _labels[_entityUpdates];
|
||||
auto totalTrackedEdits = entities->getTotalTrackedEdits();
|
||||
auto bytesPerEdit = entities->getAverageEditBytes();
|
||||
auto totalTrackedEdits = entitiesTree->getTotalTrackedEdits();
|
||||
auto bytesPerEdit = entitiesTree->getAverageEditBytes();
|
||||
|
||||
// track our updated per second
|
||||
const quint64 SAMPLING_WINDOW = USECS_PER_SECOND / SAMPLES_PER_SECOND;
|
||||
|
|
|
@ -66,6 +66,8 @@ private:
|
|||
|
||||
int _entityUpdateTime;
|
||||
int _entityUpdates;
|
||||
int _entityPackets;
|
||||
|
||||
const int SAMPLES_PER_SECOND = 10;
|
||||
SimpleMovingAverage _averageUpdatesPerSecond;
|
||||
quint64 _lastWindowAt = 0;
|
||||
|
|
|
@ -346,6 +346,8 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
|||
return 0;
|
||||
}
|
||||
|
||||
args.entitiesPerPacket++;
|
||||
|
||||
// Header bytes
|
||||
// object ID [16 bytes]
|
||||
// ByteCountCoded(type code) [~1 byte]
|
||||
|
|
|
@ -702,6 +702,8 @@ int EntityTreeElement::readElementDataFromBuffer(const unsigned char* data, int
|
|||
int bytesRead = 0;
|
||||
uint16_t numberOfEntities = 0;
|
||||
int expectedBytesPerEntity = EntityItem::expectedBytes();
|
||||
|
||||
args.elementsPerPacket++;
|
||||
|
||||
if (bytesLeftToRead >= (int)sizeof(numberOfEntities)) {
|
||||
// read our entities in....
|
||||
|
|
|
@ -195,6 +195,8 @@ public:
|
|||
SharedNodePointer sourceNode;
|
||||
bool wantImportProgress;
|
||||
PacketVersion bitstreamVersion;
|
||||
int elementsPerPacket = 0;
|
||||
int entitiesPerPacket = 0;
|
||||
|
||||
ReadBitstreamToTreeParams(
|
||||
bool includeColor = WANT_COLOR,
|
||||
|
|
|
@ -101,6 +101,9 @@ void OctreeRenderer::processDatagram(const QByteArray& dataByteArray, const Shar
|
|||
sequence, flightTime, packetLength, dataBytes);
|
||||
}
|
||||
|
||||
int elementsPerPacket = 0;
|
||||
int entitiesPerPacket = 0;
|
||||
|
||||
int subsection = 1;
|
||||
while (dataBytes > 0) {
|
||||
if (packetIsCompressed) {
|
||||
|
@ -139,13 +142,21 @@ void OctreeRenderer::processDatagram(const QByteArray& dataByteArray, const Shar
|
|||
qCDebug(octree) << "OctreeRenderer::processDatagram() ******* END _tree->readBitstreamToTree()...";
|
||||
}
|
||||
_tree->unlock();
|
||||
|
||||
|
||||
dataBytes -= sectionLength;
|
||||
dataAt += sectionLength;
|
||||
|
||||
elementsPerPacket += args.elementsPerPacket;
|
||||
entitiesPerPacket += args.entitiesPerPacket;
|
||||
|
||||
}
|
||||
subsection++;
|
||||
}
|
||||
subsection++;
|
||||
_elementsPerPacket.updateAverage(elementsPerPacket);
|
||||
_entitiesPerPacket.updateAverage(entitiesPerPacket);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool OctreeRenderer::renderOperation(OctreeElement* element, void* extraData) {
|
||||
|
|
|
@ -61,12 +61,19 @@ public:
|
|||
/// clears the tree
|
||||
virtual void clear();
|
||||
|
||||
float getAverageElementsPerPacket() const { return _elementsPerPacket.getAverage(); }
|
||||
float getAverageEntitiesPerPacket() const { return _entitiesPerPacket.getAverage(); }
|
||||
|
||||
protected:
|
||||
virtual Octree* createTree() = 0;
|
||||
|
||||
Octree* _tree;
|
||||
bool _managedTree;
|
||||
ViewFrustum* _viewFrustum;
|
||||
|
||||
SimpleMovingAverage _elementsPerPacket;
|
||||
SimpleMovingAverage _entitiesPerPacket;
|
||||
|
||||
};
|
||||
|
||||
#endif // hifi_OctreeRenderer_h
|
||||
|
|
Loading…
Reference in a new issue