1、FineReport
成都創(chuàng)新互聯(lián)公司一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動(dòng)互聯(lián)產(chǎn)品、成都營銷網(wǎng)站建設(shè)服務(wù)為核心業(yè)務(wù)。10余年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
FineReport是一款純Java編寫的、集數(shù)據(jù)展示(報(bào)表)和數(shù)據(jù)錄入(表單)功能于一身的企業(yè)級(jí)web報(bào)表工具,只需要簡單的拖拽操作便可以設(shè)計(jì)復(fù)雜的中國式報(bào)表,搭建數(shù)據(jù)決策分析系統(tǒng)。
2、Echarts
前面說過了,Echarts是一個(gè)開源免費(fèi)的javascript數(shù)據(jù)可視化庫,它讓我們可以輕松地繪制專業(yè)的商業(yè)數(shù)據(jù)圖表。
大家都知道去年春節(jié)以及近期央視大規(guī)劃報(bào)道的百度大數(shù)據(jù)產(chǎn)品,如百度遷徙、百度司南、百度大數(shù)據(jù)預(yù)測等等,這些產(chǎn)品的數(shù)據(jù)可視化均是通過ECharts來實(shí)現(xiàn)的。
3、FineBI
FineBI是新一代自助大數(shù)據(jù)分析的商業(yè)智能產(chǎn)品,提供了從數(shù)據(jù)準(zhǔn)備、自助數(shù)據(jù)處理、數(shù)據(jù)分析與挖掘、數(shù)據(jù)可視化于一體的完整解決方案,也是我比較推崇的可視化工具之一。
FineBI的使用感同Tableau類似,都主張可視化的探索性分析,有點(diǎn)像加強(qiáng)版的數(shù)據(jù)透視表。上手簡單,可視化庫豐富。可以充當(dāng)數(shù)據(jù)報(bào)表的門戶,也可以充當(dāng)各業(yè)務(wù)分析的平臺(tái)。
4、pyecharts
Echarts(下面會(huì)提到)是一個(gè)開源免費(fèi)的javascript數(shù)據(jù)可視化庫,它讓我們可以輕松地繪制專業(yè)的商業(yè)數(shù)據(jù)圖表。當(dāng)Python遇上了Echarts,pyecharts便誕生了,它是由chenjiandongx等一群開發(fā)者維護(hù)的Echarts Python接口,讓我們可以通過Python語言繪制出各種Echarts圖表。
5、Bokeh
Bokeh是一款基于Python的交互式數(shù)據(jù)可視化工具,它提供了優(yōu)雅簡潔的方法來繪制各種各樣的圖形,可以高性能的可視化大型數(shù)據(jù)集以及流數(shù)據(jù),幫助我們制作交互式圖表、可視化儀表板等。
一、前言有用的東西還是記錄下來吧,也方便以后的查詢;這次記錄一下xhprof的安裝使用;xhprof是facebook開源出來的一個(gè)php輕量級(jí)的性能分析工具,跟Xdebug類似,但性能開銷更低,還可以用在生產(chǎn)環(huán)境中,也可以由程序開 關(guān)來控制是否進(jìn)行profile。二、安裝wget pecl/get/xhprof-0.9.3.tgz tar zxf xhprof-0.9.3.tgz cd xhprof-0.9.3/extension /usr/bin/phpize (php版本安裝后生成的phpize文件,可根據(jù)phpinfo查看,所以php版本不同,生成的phpize也不同,此步驟主要生成configure文件) ./configure –with-php-config=/usr/bin/php-config (php-config的路徑,也是php安裝后生成的文件) make sudo make install (會(huì)自動(dòng)將生成的擴(kuò)展文件拷貝到擴(kuò)展目錄中/usr/lib64/php/modules)當(dāng)然具體的php文件的目錄,每個(gè)人不盡相同,可根據(jù)phpinfo查詢?nèi)?、php.ini配置根據(jù)phpinfo找到 extension_dir的目錄(/etc/php.d/xhprof.ini)添加一下內(nèi)容:extension=xhprof.so xhprof.output_dir=/tmp/xhprof //xhprof的分析日志 四、重啟服務(wù)sudo /etc/init.d/http restart 查看phpinfo是否安裝成功五、使用方法開頭: xhprof_enable(); //開啟監(jiān)測 //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不記錄內(nèi)置的函數(shù) //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); 同時(shí)分析CPU和Mem的開銷 //要測試的代碼 ... ... ... 結(jié)尾: $xhprof_data = xhprof_disable(); //停止監(jiān)測,返回運(yùn)行數(shù)據(jù) $xhprof_root = '/(xhprof的虛擬主機(jī)目錄)/'; //引入當(dāng)初安裝到xhprof虛擬主機(jī)目錄中的文件 include_once $xhprof_root."xhprof_lib/utils/xhprof_lib.php"; include_once $xhprof_root."xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs-save_run($xhprof_data, "xhprof"); echo 'a href="(xhprof的虛擬主機(jī)域名)/xhprof_html/index.php?run='.$run_id.'source=xhprof" target="_blank"xhprof統(tǒng)計(jì)/a'; 上邊的代碼使用了,給xhprof設(shè)置虛擬主機(jī)的方法。把源碼包中的 xhprof_html 和 xhprof_lib 文件夾拷貝到自己建立的虛擬目錄中cp -r xhprof_html xhprof_lib /xxx/xhprof/ (此處目的是建立數(shù)據(jù)分析目錄,可將此目錄配置成虛擬主機(jī)訪問)運(yùn)行后,統(tǒng)計(jì)點(diǎn)擊返回的 xhprof統(tǒng)計(jì) 鏈接,即可。六、注意問題以及名詞解釋在顯示的統(tǒng)計(jì)頁面中,點(diǎn)[View Full Callgraph]圖形化顯示(最大的性能問題會(huì)用紅色標(biāo)出,其次是黃色);點(diǎn)擊后,可能提示錯(cuò)誤消息,執(zhí)行以下命令即可yum install -y graphviz yum install graphviz-gd 名詞解釋Function Name 函數(shù)名 Calls 調(diào)用次數(shù) Calls% 調(diào)用百分比 Incl. Wall Time (microsec) 調(diào)用的包括子函數(shù)所有花費(fèi)時(shí)間 以微秒算(一百萬分之一秒) IWall% 調(diào)用的包括子函數(shù)所有花費(fèi)時(shí)間的百分比 Excl. Wall Time (microsec) 函數(shù)執(zhí)行本身花費(fèi)的時(shí)間,不包括子樹執(zhí)行時(shí)間,以微秒算(一百萬分之一秒) EWall% 函數(shù)執(zhí)行本身花費(fèi)的時(shí)間的百分比,不包括子樹執(zhí)行時(shí)間 Incl. CPU(microsecs) 調(diào)用的包括子函數(shù)所有花費(fèi)的cpu時(shí)間。減Incl. Wall Time即為等待cpu的時(shí)間 減Excl. Wall Time即為等待cpu的時(shí)間 ICpu% Incl. CPU(microsecs)的百分比 Excl. CPU(microsec) 函數(shù)執(zhí)行本身花費(fèi)的cpu時(shí)間,不包括子樹執(zhí)行時(shí)間,以微秒算(一百萬分之一秒)。 ECPU% Excl. CPU(microsec)的百分比 Incl.MemUse(bytes) 包括子函數(shù)執(zhí)行使用的內(nèi)存。 IMemUse% Incl.MemUse(bytes)的百分比 Excl.MemUse(bytes) 函數(shù)執(zhí)行本身內(nèi)存,以字節(jié)算 EMemUse% Excl.MemUse(bytes)的百分比 Incl.PeakMemUse(bytes) Incl.MemUse的峰值 IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比 Excl.PeakMemUse(bytes) Excl.MemUse的峰值 EPeakMemUse% EMemUse% 峰值百分比 xhprof的安裝與簡易用法xhprof是Facebook開源的輕量級(jí)PHP性能分析工具,Linux環(huán)境下可以通過pecl直接安裝,比如在Ubuntu下僅需3行指令pecl install xhprof-beta echo "extension=xhprof.so" /etc/php5/fpm/conf.d/xhprof.ini service php5-fpm restart 之后可以通過phpinfo()檢查擴(kuò)展是否已經(jīng)加載。具體如何使用呢,xhprof項(xiàng)目中已經(jīng)提供了示例以及簡易的UI,下載xhprof項(xiàng)目到web服務(wù)器,假設(shè)可以通過localhost/xhprof/訪問,那么訪問localhost/xhprof/examples/sample.php可以看到一些輸出,并且提示通過訪問xhprof-ui-address/index.php?run=XXXsource=xhprof_foo查看結(jié)果。接下來訪問localhost/xhprof/xhprof_html/就可以看到已經(jīng)保存的結(jié)果,列出了所有函數(shù)的調(diào)用以及所消耗的時(shí)間。分析一下示例代碼sample.php,關(guān)鍵部分只有2行://開啟xhprof并開始記錄 xhprof_enable(); //運(yùn)行一些函數(shù) foo(); //停止記錄并取到結(jié)果 $xhprof_data = xhprof_disable(); $xhprof_data中記錄了程序單步運(yùn)行過程中所有的函數(shù)調(diào)用時(shí)間及CPU內(nèi)存消耗等,具體記錄哪些指標(biāo)可以通過xhprof_enable的入口參數(shù)控制,之后的處理已經(jīng)與xhprof擴(kuò)展無關(guān),大致是編寫了一個(gè)存儲(chǔ)類XHProfRuns_Default,將$xhprof_data序列化并保存到某個(gè)目錄,可以通過XHProfRuns_Default(__DIR__)將結(jié)果輸出到當(dāng)前目錄,如果不指定則會(huì)讀取php.ini配置文件中的xhprof.output_dir,仍然沒有指定則會(huì)輸出到/tmp。xhprof_html/index.php將記錄的結(jié)果整理并可視化,默認(rèn)的UI里列出了:?funciton name : 函數(shù)名?calls: 調(diào)用次數(shù)?Incl. Wall Time (microsec): 函數(shù)運(yùn)行時(shí)間(包括子函數(shù))?IWall%:函數(shù)運(yùn)行時(shí)間(包括子函數(shù))占比?Excl. Wall Time(microsec):函數(shù)運(yùn)行時(shí)間(不包括子函數(shù))?EWall%:函數(shù)運(yùn)行時(shí)間(不包括子函數(shù))每一項(xiàng)應(yīng)該不難理解,以項(xiàng)目自帶的sample.php為例,示例中編寫了一個(gè)main()函數(shù),main()函數(shù)中調(diào)用foo()、bar()等一些子函數(shù)進(jìn)行了一點(diǎn)字符處理。整個(gè)程序運(yùn)行過程中,main()函數(shù)只運(yùn)行了一次,并且由于main()函數(shù)中包括了所有的邏輯,所以main()函數(shù)的IWall%占比為100%,但是由于main()函數(shù)的功能都是由子函數(shù)實(shí)現(xiàn)的,因此main()函數(shù)的EWall%只有0.3%,而foo()函數(shù)完成了主要的工作,EWall%有98.1%。因此在分析更大型的程序時(shí),往往需要根據(jù)這幾項(xiàng)指標(biāo)分別排序,從不同的角度審視性能消耗。在xhprof_html/index.php中還可以看到[View Full Callgraph]鏈接,點(diǎn)擊后可以繪制出一張可視化的性能分析圖,如果點(diǎn)擊后報(bào)錯(cuò)的話,可能是缺少依賴graphviz,ubuntu可以通過apt安裝apt-get install graphviz更好的注入方式了解了上面這些,其實(shí)就已經(jīng)可以將xhprof整合到任何我們已有的項(xiàng)目中去了。目前大部分MVC框架都有唯一的入口文件,只需要在入口文件的開始處注入xhprof的邏輯//開啟xhprof xhprof_enable(XHPROF_FLAGS_MEMORY XHPROF_FLAGS_CPU); //在程序結(jié)束后收集數(shù)據(jù) register_shutdown_function(function() { $xhprof_data = xhprof_disable(); //讓數(shù)據(jù)收集程序在后臺(tái)運(yùn)行 if (function_exists('fastcgi_finish_request')) { fastcgi_finish_request(); } //保存xhprof數(shù)據(jù) ... }); 但是這樣免不了要修改項(xiàng)目的源代碼,其實(shí)php本身就提供了更好的注入方式,比如將上述邏輯保存為/opt/inject.php,然后修改php fpm配置文件vi /etc/php5/fpm/php.ini 修改auto_prepend_file配置auto_prepend_file = /opt/inject.php 這樣所有的php-fpm請(qǐng)求的php文件前都會(huì)自動(dòng)注入/opt/inject.php文件如果使用Nginx的話,還可以通過Nginx的配置文件設(shè)置,這樣侵入性更小,并且可以實(shí)現(xiàn)基于站點(diǎn)的注入。fastcgi_param PHP_VALUE "auto_prepend_file=/opt/inject.php";
數(shù)據(jù)分析軟件有很多種,每一種都適合不同類型的人員。
簡單說:
Excel:普遍適用,既有基礎(chǔ),又有中高級(jí)。中級(jí)一般用Excel透視表,高級(jí)的用Excel VBA。
hihidata:比較小眾的數(shù)據(jù)分析工具。三分鐘就可以學(xué)會(huì)直接上手。無需下載安裝,直接在線就可以使用。
SPSS:專業(yè)統(tǒng)計(jì)軟件,沒有統(tǒng)計(jì)功底很難用的。同時(shí)包含了數(shù)據(jù)挖掘等高大功能。
SAS:專業(yè)統(tǒng)計(jì)軟件,專業(yè)人士用的,不懂編程還是不要碰了。
MARLAB:建立統(tǒng)計(jì)與數(shù)學(xué)模型,但是比較難學(xué),很難上手。
Eview:比較小眾,建立一些經(jīng)濟(jì)類的模型還是很有用的。計(jì)量經(jīng)濟(jì)學(xué)中經(jīng)常用到。
各種BI與報(bào)表工具:FineBI,F(xiàn)ineReport,tableau,QlikView等。
除草劑地塊。無論選擇哪種茬