2013-02-19 62 views
0

我想繪製一個圖表,描繪一個進程的內存消耗與時間的關係。在得到SO的幫助後,我能夠獲得內存消耗並使用Qt繪製圖形。爲了展示內存中的細微變化,我以字節爲單位縮放Y軸。繪製一個具有大數值但數值變化很小的圖表

我的問題是,通常消耗的內存是一個非常大的值,要在我的圖中展示出來,並且它從可見區域射出。

我研究here我該如何使用對數刻度來避免這個問題。但這會導致另一個問題:

一段時間後,通常的流程落戶與內存初始化和內存消耗任何進一步的變化與該進程佔用的內存總量相比非常小的值。因此,這些更改在我的圖表上並不真正可見,因爲我正在縮放日誌。但我的主要目標是以圖形格式展示這種總內存消耗的變化。

我的方法錯了還是有更好的方法來實現這個?

在Qt/C++/qml中的實現,但通用的想法是最受歡迎的。

例如。

Time:0 Sec | 功耗:0字節

Time:1 Sec | 消費:1212120字節

時間:2秒| 消費:1212520字節

時間:3秒。| 消費:1212720個字節

..消費平息下來,在這個時候 - 現在只有小的變化 -

時間:20秒| 消費:1212890個字節

時間:21秒| 消費:1212893個字節

時間:22秒。| 消費:1212895個字節

+1

如何繪製內存使用的_delta_?也就是說,第2秒時爲+500字節,第3秒時爲+200字節,... – timrau 2013-02-19 14:09:44

+0

獲得兩全其美的效果 - 以對數縮放顯示一幅圖的大小,並在單獨的圖上顯示實際的字節數。對於第二個繪圖,將ymin,ymax縮放到最近10秒內運行平均值的20%。 – Hooked 2013-02-19 14:48:10

+0

@Dukeling謝謝!您能否將其作爲答案發布,以便我可以詢問其他一些關於您的解決方案的疑問,也許可以接受它作爲答案。 – 2013-02-20 03:35:03

回答

2
  • 甲分數功率(如平方根)可以是考慮而不是對數。

  • 忽略第一個值。如果時間0的值始終爲0,則可以考慮忽略它。它顯着地抵消了你的數據集。然後在曲線圖的y分可以是1212120和它的外觀更好:

    Graph

  • 顯示(在時間x值 - 值在時間x-1)的變化,而不是實際的值(值在時間x)也許是一個好主意。

+0

我想知道這個想法是怎麼來的。是否決定使用分數權力,因爲他們的變化率將小於對數函數的變化率? – 2013-02-20 09:16:04

+0

我在算法複雜性方面做了相當多的工作,這使得人們非常熟悉'n','sqrt(n)'和'log(n)'之間的關係。從本質上講,我認爲你需要'n'和'log(n)'之間的東西,這是'sqrt(n)'適合的地方。 – Dukeling 2013-02-20 09:21:50

2

這裏是接近的一種方式:

  1. 圖的變化,而不是絕對值。
  2. 使用內嵌或小圖表,就像在地圖中一樣,可以顯示圖表角落的大變化。在圖表的主要部分,顯示小的變化。
  3. 在主圖表的另一個角落顯示當前光標位置(單個數字)的內存使用情況值。
相關問題