Web性能優化工具WebPageTest(一)——總覽與配置

網站性能優化工具大致分為兩類:綜合類和RUM類(實時監控用戶類),WebPageTest屬於綜合類。WebPageTest通過布置一些特定的場景進行測試,例如不同的網速、瀏覽器、位置等。測試完成後,能獲得優化等級、性能參數、請求瀑布圖、網頁幻燈片快照等,更多信息可以參考《WebPageTest快速入門》。 一、總覽 輸入網址後,首先進入視野中的就是下面這張畫面。 1)原理根據WebPageTest的《概述》了解到,WebPageTest是一個PHP網站,用戶輸入網址、地點、自定義腳本等信息後,參數發送到後台。後台做些邏輯處理,再通過瀏覽器相關的代理程序,啟動Chrome、Firefox或IE,瀏覽器執行完後。將數據傳回給後台,後台再將數據保存起來,最後通過各種形式(圖、表格、列等),將分析數據過的數據,呈現給用戶。2)視覺進展WebPageTest會測量視覺進展,也就是展示每個時間顯示多少百分比的 ...
Read more

Scala Meetup WarmUp: 2.12.x慢了?

Scala 2.12.x 比 2.11.x 的編譯速度快了不少,但是實測發現Scala 2.12.x變慢了。sbt clean project benchmark set scalaVersion := "2.11.12" jmh:run -f 1 -i 20 -wi 20 -t 1 Richards[info] Benchmark Mode Cnt Score Error Units[info] Richards.run thrpt 20 7464.953 ± 65.303 ops/ssbt clean project benchmark set scalaVersion := "2.12.6" jmh:run -f 1 -i 20 -wi 20 -t 1 Richards[info] Benchmark Mode Cnt Score ...
Read more

Elasticsearch性能優化總結

Elasticsearch是目前大數據領域最熱門的技術棧之一,經過近8年的發展,已從0.0.X版升級至6.X版本,雖然增加了很多的特性和功能,但是在主體架構上,還是沒有太多的變化。下面就把我對於ES使用實踐的一些經驗總結一下,供大家參考;也請大家拍磚。 一、 硬體環境選擇: 如果有條件,儘可能使用SSD硬碟, 不錯的CPU。ES的厲害之處在於ES本身的分散式架構以及lucene的特性。IO的提升,會極大改進ES的速度和性能。 二、系統拓樸設計: ES集群在架構拓樸時,一般都會採用Hot-Warm的架構模式,即設置3種不同類型的節點:Master節點、Hot 節點和 Warm節點。Master節點設置:一般會設置3個專用的maste節點,以提供最好的彈性擴展能力。當然,必須注意discovery.zen.minimum_master_nodes ...
Read more

LoadRuner腳本開發(八)---關聯的原理

在學習關聯之前必需清楚兩個問題,一是:什麼情況下需要關聯?二是:LoadRunner使用關聯函數進行關聯時,關聯函數是如何獲得這些動態數據的,即關聯函數的工作原理?第一個問題,什麼情況下需要關聯,以飛機訂票系統登錄過程為例,其登錄過程如圖所示。載入超時,點擊重試 第一個問題,什麼情況下需要關聯,以飛機訂票系統登錄過程為例,其登錄過程如圖6-48所示。第一步:進入登錄界面,輸入用戶名和密碼進行登錄。第二步:伺服器向客戶端返回一個Session ID值。第三步:客戶端向服務發送請求,在發送請求給伺服器時,同時會向伺服器發送一個Session ID,這個Session ID就是第二步從伺服器返回到客戶端的Session ID值,並且第二步和第三步的Session ...
Read more

動畫生萬物

一、動畫生萬物 動畫需求可能是很多Android開發者揮之不去的夢魘,是否還記得那些千奇百怪的動畫需求,記得那些與視覺埋頭苦幹的日日夜夜,記得獨自一人照著小視頻擼動畫的心酸歷程。不過非常抱歉,熟讀本文並非但不能解決上述問題,反而會讓上述過程更加痛苦,請意志不堅定者不要輕易嘗試。 動畫除了可以實現App里的5毛錢特效,實際跟UI性能息息相關。單純站在UI的角度看,App的本質就是響應用戶輸入產生UI變化的過程,而UI變化的過程就是廣義上的動畫過程。 比如說,我們可以把Scroller,computeScroll + invalidate的過程理解成一個逐幀動畫;可以把列表滑動,onTouchEvent + ...
Read more

LoadRuner腳本開發(五)---哪些情況參數化

工作中為什麼要進行參數化呢?1)藉助參數化可以減小腳本的數量,如果不進行參數化為了達到目標可能需要拷貝並修改很多個腳本。2)使業務更接近真實的客戶業務,每個虛擬用戶使用不同參數值來模擬,這樣可以更好地接近客戶的實際情況。 在實際工作中一般以下情況需要進行參數化:1) 日期時間如這類業務,需要訂一張機票,那麼訂票的日期一定是當前日期之後,不可能是當前時間之前的日期,如當前系統時間為2012年8月20日,那麼訂票時一定需要使用20日後期的日期(如訂25日的機票),但是如果到25日之後再來回放該腳本時,還是發現腳本無法正常使用,所以對於這類情況需要參數化。2) ...
Read more

精細優化APP啟動

目前,很多App普遍採取啟動後首先進入一個歡迎界面(`SplashActivity`)等待短暫時間後再進入主界面(一般3秒,期間展示推廣內容,可掩蓋載入)。此外,有些APP首裝後有Guide或者登錄,大致流程是 `啟動 -> Application -> SplashActivity -> LoginActivity/GuideActivity -> MainActivity`,而冷啟動一般為 `啟動 -> Application -> SplashActivity -> ...
Read more

LoadRuner腳本開發(三)---檢查點函數

該函數作用是在頁面中查找相應的內容。常用參數的含義如下:web_find("Text Check", //檢查點步驟名稱 "RightOf=Go to", //定義查找字元串右邊界 "LeftOf=page", //定義查找字元串左邊界 "What=Home", //定義檢查字元串內容 LAST); 使用該函數時要注意以下幾個問題:1)該函數只能對基於HTML模式錄製的腳本進行查找。2)該函數必須在頁面內容顯示出來以後才能進行查找,所以該函數必須寫在查找內容所在頁面的後面。3)必須啟用內容檢查選項,在Run-time Settings→Preferences裡面,把Enable Image and text ...
Read more

LoadRuner腳本開發(十一)--關聯技術的使用

前面詳細的闡述了關聯函數的參數,從本質上來說,關聯函數是一個查找函數,說透了就是從HTML文件內容中查找需要的值,並將其保存在一個變數或數組中。那麼換一個角度來看,其實關聯函數不單單可以匹配一些變化的值,同樣可匹配一些固定的內容,並將其保存到一個數據組,供後續業務使用。也即對關聯函數進行擴展使用,在處理業務中這種方式被經常使用到。實例:以飛機訂票系統為例,假設要實現這樣的業務,選擇好出發城市和到達城市後,在選擇航班時,需要選擇票價最便宜的航班,如圖所示。載入超時,點擊重試實現思路:首先使用關聯函數讀取HTML代碼中票價和航班號,分別將兩部分的數據保存在不同的數組中;接著比較票價,選擇找到票價最低的是數組中的最幾個元素,即最便宜機票所在數據的下標;最後將該下標的值對應的讀出航班號,就是最便宜的航班。在使用關聯函數進行關聯票價與航班號之前,必須首先分析票價和航班號的左邊界值和右邊界值,關於航班信息的HTM ...
Read more

Android性能優化之常見的內存泄漏

本文作者:伯樂在線-Sunzxyong前言對於內存泄漏,我想大家在開發中肯定都遇到過,只不過內存泄漏對我們來說並不是可見的,因為它是在堆中活動,而要想檢測程序中是否有內存泄漏的產生,通常我們可以藉助LeakCanary、MAT等工具來檢測應用程序是否存在內存泄漏,MAT是一款強大的內存分析工具,功能繁多而複雜,而LeakCanary則是由Square開源的一款輕量第三方內存泄漏檢測工具,當它檢測到程序中有內存泄漏的產生時,它將以最直觀的方式告訴我們該內存泄漏是由誰產生的和該內存泄漏導致誰泄漏了而不能回收,供我們複查。最近騰訊bugly也推出了三篇關於Android內存泄漏調優的文章:1、內存泄露從入門到精通三部曲之基礎知識篇2、內存泄露從入門到精通三部曲之排查方法篇3、內存泄露從入門到精通三部曲之常見原因與用戶實踐關於性能優化的文章,出自Realm.io:10 條提升 Android ...
Read more