當前位置:首頁 » 網頁前端 » 性能優化腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

性能優化腳本

發布時間: 2022-11-01 02:24:49

前端性能優化的具體方法有哪些

解決辦法一:

減少http請求次數:CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網頁Gzip,CDN託管,data緩存 ,圖片伺服器。
前端模板 JS+數據,減少由於HTML標簽導致的帶寬浪費,前端用變數保存AJAX請求結果,每次操作本地變數,不用請求,減少請求次數
用innerHTML代替DOM操作,減少DOM操作次數,優化javascript性能。
當需要設置的樣式很多時設置className而不是直接操作style。
少用全局變數、緩存DOM節點查找的結果。減少IO讀取操作。
避免使用CSS Expression(css表達式)又稱Dynamic properties(動態屬性)。
圖片預載入,將樣式表放在頂部,將腳本放在底部 加上時間戳。
解決辦法二:

減少HTTP請求次數
使用CDN:CDN在前端開發的作用
避免空的src和href
為文件頭指定Expires
使用gzip壓縮內容
把CSS放到頂部
把JS放到底部
避 免使用CSS表達式
將CSS和JS放到外部文件中
避免跳轉
可緩存的AJAX
使用GET來完成AJAX請求

❷ 怎麼提高腳本的執行速度

一、BIOS的優化設置

在BIOS設置的首頁我們進入「Advanced BIOS Features」選項,將游標移到「Frist Boot Device」選項,按「PageUP」和「PageDOWN」進行選擇,默認值為「Floppy」,這表示啟動時系統會先從軟碟機里讀取啟動信息,這樣做會加長機器的啟動時間,減短軟碟機的壽命。所以我們要選「HDD-0」直接從硬碟啟動,這樣啟動就快上好幾秒。 另外,對於BIOS設置中的「Above 1MbMemoryTest」建議選「Disabled」,對於「QuickPowerOnSelftest」建議選擇Enabled。

在「Advanced Chipset Features」項中的設置對機子的加速影響非常大,請大家多加留意。將「Bank 0/1 DRAM Timing」從「8ns/10ns」改為「Fast」或「Turbo」。「Turbo」比「Fast」快,但不太穩定,建議選「Fast」。如果內存質量好可以選「Turbo」試試,不穩定可以改回「Fast」。

對於內存品質好的內存條建議在「SDRAM CAS Latency」選項中設置為「2」,這樣可以加快速度哦。

較新的主板都支持AGP4X,如果你的顯卡也支持AGP4X,那麼就在「AGP-4XMode」處將這項激活,即選為「Enabled」,這才會更好的發揮顯卡的能力,加快系統啟動速度。

二、啟動DMA方式,提高硬碟速度

採用UDMA/33、66、100技術的硬碟最高傳輸速率是33MB/s、66MB/s、100MB/s,從理論上來說是IDE硬碟(這里是指PIO MODE4 模式,其傳輸率是16.6MB/s)傳輸速率的3~6倍,但是在Windows裡面預設設置中,DMA卻是被禁用的,所以我們必須將它打開。

具體方法是:打開「控制面板→系統→設備管理器」窗口,展開「磁碟驅動器」分支,雙擊UDMA硬碟的圖標,進入「屬性→設置→選項」,在「DMA」項前面「√」,然後按確定,關閉所有對話框,重啟電腦即可。

三、去掉Windows的開機標志。

首先你要打開「開始」→「設置」→「文件夾選項」,從「查看」標簽里的「高級設置」列表框中勾選「顯示所有文件」。然後打開C盤,找到Msdos.sys這個文件,並取消它的「只讀」屬性,打開它,在「Option」段落下,加上一行語句:LOGO=0,這樣Windows的開機圖案就不會被載入運行,開機時間也可以縮短3秒鍾。

四、優化「啟動」組。

電腦初學者都愛試用各種軟體,用不多久又將其刪除,但常常會因為某些莫名其妙的原因,這些軟體還會駐留在「啟動」項目中(尤其是在使用一些D版軟體時),Windows啟動時就會為此白白浪費許多時間。要解決這個問題,其實很簡單,你可以打開「開始」→「運行」,在出現的對話框的「打開」欄中選中輸入「msconfig」,然後點擊「確定」,就會調出「系統配置實用程序」,點擊其中的「啟動」標簽,將不用載入啟動組的程序前面的「√」去掉就可以了。如此一來,至少可以將啟動時間縮短10秒。

五、整理、優化注冊表。

Windows在開機啟動後,系統要讀取注冊表裡的相關資料並暫存於RAM(內存)中,Windows開機的大部分時間,都花費了在這上面。因此,整理、優化注冊表顯得十分必要。有關注冊表的優化,可以使用Windows優化大師等軟體。以Windows優化大師,點擊「注冊信息清理」→「掃描」,軟體就會自動替你清掃注冊表中的垃圾,在掃描結束後,會彈出個菜單讓你選擇是否備份注冊表,建議選擇備份,備份後再點擊「清除」即可。

六、經常維護系統。

如果在系統中安裝了太多的游戲、太多的應用軟體、太多的舊資料,會讓你的電腦運行速度越來越慢,而開機時間也越來越長。因此,最好每隔一段時間,對電腦做一次全面的維護。點擊「開始」→「程序」→「附件」→「系統工具」→「維護向導」,然後點擊「確定」按鈕即可對電腦進行一次全面的維護,這樣會使你的電腦保持在最佳狀態。對於硬碟最好能每隔2個星期就做一次「磁碟碎片整理」,那樣會明顯加快程序啟動速度的,點擊「系統工具」→「磁碟碎片整理程序」即可。注意在整理磁碟碎片時系統所在的盤一定要整理,這樣才能真正加快Windows的啟動順序。

七、擴大虛擬內存容量。

如果你的硬碟夠大,那就請你打開」控制面板「中的「系統」,在「性能」選項中打開「虛擬內存」,選擇第二項:用戶自己設定虛擬內存設置,指向一個較少用的硬碟,並把最大值和最小值都設定為一個固定值,大小為物理內存的2倍左右。這樣,虛擬存儲器在使用硬碟時,就不用遷就其忽大忽小的差別,而將固定的空間作為虛擬內存,加快存取速度。虛擬內存的設置最好在「磁碟碎片整理」之後進行,這樣虛擬內存就分不在一個連續的、無碎片文件的空間上,可以更好的發揮作用。

八、去掉「牆紙」、「屏幕保護」等花哨的設置。

這些設置佔用系統資源不說,還嚴重影響Windows的啟動順序。去掉它們的方法是:在桌面空白處點擊滑鼠右鍵,在彈出的菜單中選擇「屬性」,在彈出的對話框中分別選擇「背景」和「屏幕保護程序」標簽,將「牆紙」和「屏幕保護程序」設置為「無」即可。

九、刪除Autoexec.bat和Config.sys。

系統安裝盤根目錄下的Autoexec.bat和Config.sys這兩個文件,Windows已經不需要它們了,可以將它們安全刪除,這樣可以加快Windows的啟動速度。

十、精簡*.ini文件,尤其是System.ini和Win.ini的內容。

在system.ini的[boot]和[386Enh]小節中載入了許多驅動程序和字體文件,是清除重點。尤其要注意的是,[boot]欄位的shell=Explorer.exe是木馬喜歡的隱蔽載入之所,木馬們通常會將該句變為這樣:shell=Explorer.exe file.exe,注意這里的file.exe就是木馬服務端程序!有了木馬隨後載入運行不僅對系統安全造成了威脅,電腦啟動也慢了許多;對Win.ini中的「Run」及「Load」後面載入的、不是每次開機必須運行的程序,可以暫時清除,等以後要用時再點擊運行。這樣開機時Windows調用的相關文件就會減少許多,啟動速度自然就會快多了。

十一、關閉磁碟掃描。

用文本編輯器打開msdos.sys,會看到以下內容:

[Options]

bootmulti=1

bootgui=1

autoscan=1

如果不想非正常關機後運行磁碟掃描程序,可以把atuoscan=1改為autoscan=0,這樣在非正常關機後計算機的啟動速度也會快上一些(因為scandisk沒有運行嘛)。

十二、讓引導信息停留時間最短。

用文本編輯器打開msdos.sys,設置[Options]中的BootDelay為0即可。

十三、減少不必要的字體文件。

字體文件佔用系統資源多,引導時很慢,並且佔用硬碟空間也不少。因此盡量減少不必要的字體文件。但如果刪錯了字體文件,搞不好會使Windows不正常。因此可以採用下面這個「偷梁換柱」的方法(可以實現字體文件的安裝,而不佔用大量的磁碟空間):首先打開字型檔文件夾(如F:\zk),選中全部TrueType字體文件,用滑鼠的右鍵將它們拖動到C:\Windows\Fonts文件夾中,在彈出的菜單中選擇「在當前位置創建快捷方式」,這樣就可以在系統的字體文件夾下建立字型檔文件的快捷方式了。當需要使用這些字型檔文件時,只要插入字型檔光碟,不用時取出就可以了。

十四、刪去多餘的Dll文件。在Window操作系統的System子目錄里有許多的Dll文件,這些文件可能被許多文件共享,但有的卻沒有沒有一個文件要使用它,也就是說這些文件沒用了,為了不佔用硬碟空間和提高啟動運行速度,完全可以將其刪除。

十五、「旁門左道」的辦法。如採用系統懸掛,即將當前系統狀態在關機後保存,下次開機後,系統會直接進入上次關機前的桌面,用這種方法,開機時間最快可以達到4-5秒鍾,但不是所有的主板BIOS都支持的,設置起來也稍顯麻煩。

打開注冊表,展開到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls子鍵,在右邊的有許多Dll文件,如果數據為0,則可以判定該Dll文件沒有程序共享,可以刪掉它。

如果按以上的方法做了電腦啟動速度仍不夠快,除了升級硬體(CPU、內存、硬碟等)外,另一個好辦法是重裝系統,這樣可以明顯加快電腦啟動速度

❸ hive性能優化及參數調優

記錄一下自己在工作中經常用到的幾個參數設置,從調整的實際效果看還是有效果的。

企業相關伺服器資源配置:平均600台active的節點,

每個節點可用的內存在200G左右,可用的memory total:116T

1、**set hive.exec.parallel=true;**

開啟job的並行:基本每個hql腳本都會開啟這個參數,默認並行度為8,

在集群資源充足的情況下,可以提高job並行的數量:

set hive.exec.parallel.thread.number=16;  (企業生產中我是很少用到這個的,都是用的默認值,因為太消耗資源怕影響別的任務,搞不好會被運維抓住,郵件通報批評!當然使用時還是看具體情況吧!)

因為需求中一張表的job的數量每次基本都在20個以上,在相關維度多,涉及到的欄位邏輯復雜的情況下,

一張表中job的數量會超過100個,之前做的一個需求中insert插入的腳本中job的數量達到了169個,

在測試環境運行的時候只用了一個小時就跑完了,數據量在一億條左右,大概有一百多G。

2、**set hive.map.aggr=true;**

在map端中會做部分聚集操作,效率更高但需要更多的內存,可以根據自己企業的資源情況來設置,

如果我的腳本涉及到的數據量不大的話,我一般不會開啟這個參數。

3、**set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;**

hive0.5開始的默認值,執行map前進行小文件合並,在一個job中生成的map的數量很多的時候,

和第二個參數一起開啟配合使用,在實際生產中多次驗證發現可以減少一倍以上的map數量。

在開啟前我的一個job的map數量有577個,開啟後的map的數量只有196個,極大提高程序的運行效率。

4、**set mapred.max.split.size=256000000;**

每個Map(一個切片的)最大輸入大小(這個值決定了合並後文件的數量),和第3個參數配合一起使用

默認值也是256000000,

mapred.min.split.size默認值是10000000

dfs.block.size默認是128M,這個參數通過hive來更改是沒有實際用的,只能通過hdfs來修改

***實際在hive中,並不是split的大小要小於等於blocksize,而是可以遠大於blocksize,為什麼???(map的數量)***

<1>當hive需要處理的文件是壓縮,且壓縮演算法不支持文件切分的時候,決定map個數的因素主要是文件塊實際存儲的大小,

如果文件塊本身很大,比如500Mb左右,那麼每個map處理的splitsize至少要是500Mb左右。

這個時候我們不能人為通過參數降低每個map的splitsize來增加map個數,只能通過增加splitsize,減少map個數,

如果hive處理的文件是壓縮模式,且壓縮模式不支持文件切分,那麼這個時候我們只能通過控制參數來減少map個數,而不能通過配置參數來增加map個數,所以Hive對於壓縮不可切分文件的調優有限

<2>如果Hive處理的的文件為非壓縮格式或者壓縮可切分,且inputFormat為CombineHiveInputFormat時,

則控制map個數是由以下四個參數起作用,關於這四個參數作用優先順序與使用注意事項請參考如下:

一般來講這幾個參數的結果大小要滿足以下條件:

max.split.size >= min.split.size >= min.size.per.node >= min.size.per.rack

幾個參數的作用優先順序為:

max.split.size <= min.split.size <= min.size.per.node <= min.size.per.rack

總結:所以對於控制map的個數進行調優,首先需要看是否開啟了壓縮,壓縮演算法是否支持切分,參數的設置等等!

5、**set mapred.min.split.size.per.node=256000000;**

一個節點上split的至少的大小(這個值決定了多個DataNode上的文件是否需要合並) ,

和第3和第4個參數一起配合使用。

6、**set mapred.min.split.size.per.rack=256000000;**

一個交換機下split的至少的大小(這個值決定了多個交換機上的文件是否需要合並) ,

也適合第3,4,5的參數一起配合使用。

7、**set hive.exec.mode.local.auto=true;**

開啟本地模式,這個參數在自己學習中可能經常用到,但是在實際生產中用到的還是比較少,

因為這個參數開啟後,針對的是小數據集,在單台機器上處理所有的任務,對生產中的任務不適用!

8、**set hive.exec.recers.bytes.per.recer=512*1000*1000;**

每個rece任務處理的數據量,默認為256M,在hive0.14.0之前默認是1G,我們公司設置的是512M,寫的是512*1000*1000因為在網路傳輸中用的是1000,而不是1024機制,

將該參數值調小可以增加rece的數量,提高運行的效率,

當然也不是rece的數量越多越好,因為啟動和初始化rece都是會消耗資源和時間的,

而且有多少個rece就會有多少個輸出文件,如果這些文件作為下一個任務的輸入,就會造成小文件過多的問題

9、**hive.exec.recers.max**

每個任務最大的rece數,默認為1009,在hive0.14.0之前默認是999

計算recer數的公式很簡單N=min(參數9,總輸入數據量/參數8)

即,如果rece的輸入(map的輸出)總大小不超過1G,那麼只會有一個rece任務;

10、**set mapred.rece.tasks = 15;**

設置rece的個數(在實際生產中謹慎使用)

那麼什麼時候可以進行手動設定rece數量呢?比如系統自動計算的rece個數,因為集群資源不足,

造成程序運行出現OOM(內存溢出不足)時,可以根據推定的rece個數手動增加數量,保證程序在跑的慢的基礎上可以完整運行

那麼在什麼情況下只有一個rece呢?

<1>、當map的輸出文件小於hive.exec.recers.bytes.per.recer時

<2>、手動設置set mapred.rece.tasks =1時

<3>、使用了order by時(全局排序會使用一個rece去處理)

<4>、表關聯時出現笛卡爾積

<5>、單獨使用count時,比如:select count(*) from tablename,

如果改寫加入了group by配合使用就不會出現一個rece,比如:select sign_date,count(*) from tablename group by sign_date;

11、**set mapred.job.reuse.jvm.num.tasks=10;**

用於避免小文件的場景或者task特別多的場景,這類場景大多數執行時間都很短,因為hive調起maprece任務,JVM的啟動過程會造成很大的開銷,尤其是job有成千上萬個task任務時,JVM重用可以使得JVM實例在同一個job中重新使用N次

12、**set hive.exec.dynamic.partition=true;**

表示開啟動態分區功能

13、**set hive.exec.dynamic.partition.mode=nonstrict;**

表示允許所有分區都是動態的,

默認是strict,表示必須保證至少有一個分區是靜態的

14、**set hive.groupby.skewindata=true;**

有數據傾斜的時候進行負載均衡 ,決定group by操作是否支持傾斜數據,其實說白了就相當於MR中的conbiner做了一次預聚合。

注意:只能對單個欄位聚合。

控制生成兩個MR Job,第一個MR Job Map的輸出結果隨機分配到rece中減少某些key值條數過多某些key條數過小造成的數據傾斜問題。

在第一個 MapRece 中,map 的輸出結果集合會隨機分布到 rece 中, 每個rece 做部分聚合操作,並輸出結果。這樣處理的結果是,相同的 Group By Key 有可能分發到不同的rece中,從而達到負載均衡的目的;

第二個 MapRece 任務再根據預處理的數據結果按照 Group By Key 分布到 rece 中(這個過程可以保證相同的 Group By Key 分布到同一個 rece 中),最後完成最終的聚合操作

15、**set hive.auto.convert.join=true;**

開啟map join

16、**set hive.mapjoin.smalltable.filesize=512000000;**

map join的小表的大小,也是開啟和關閉map join的閾值

17、**hive.exec.compress.output=true;**

開啟壓縮,我們公司使用的是默認的壓縮演算法deflate

壓縮演算法有:<1>、org.apache.hadoop.io.compress.GzipCodec,

  <2>、org.apache.hadoop.io.compress.DefaultCodec,

  <3>、com.hadoop.compression.lzo.LzoCodec,

  <4>、com.hadoop.compression.lzo.LzopCodec,

  <5>、org.apache.hadoop.io.compress.BZip2Codec

使用的壓縮演算法:

set maprece.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.DefaultCodec

**針對上述小文件合並的三個參數值做以下解釋:**

大於文件塊大小128m的,按照128m來分隔,小於128m,大於100m的,按照100m來分隔,把那些小於100m的(包括小文件和分隔大文件剩下的),進行合並

❹ 如何優化JavaScript腳本的性能

循環循環是很常用的一個控制結構,大部分東西要依靠它來完成,在JavaScript中,我們可以使用for(;;),while(),for(in)三種循環,事實上,這三種循環中for(in)的效率極差,因為他需要查詢散列鍵,只要可以就應該盡量少用。for(;;)和while循環的性能應該說基本(平時使用時)等價。而事實上,如何使用這兩個循環,則有很大講究。我在測試中有些很有意思的情況,見附錄。最後得出的結論是:如果是循環變數遞增或遞減,不要單獨對循環變數賦值,應該在它最後一次讀取的時候使用嵌套的++或--操作符。如果要與數組的長度作比較,應該事先把數組的length屬性放入一個局部變數中,減少查詢次數。舉例,假設arr是一個數組,最佳的遍歷元素方式為:for(var i=0, len = arr.length;i或者,如果無所謂順序的話:for(var i=arr.length;i>0;i--){...}局部變數和全局變數局部變數的速度要比全局變數的訪問速度更快,因為全局變數其實是全局對象的成員,而局部變數是放在函數的棧當中的。不使用Eval使用eval相當於在運行時再次調用解釋引擎對內容進行運行,需要消耗大量時間。這時候使用JavaScript所支持的閉包可以實現函數模版(關於閉包的內容請參考函數式編程的有關內容)減少對象查找因為JavaScript的解釋性,所以a.b.c.d.e,需要進行至少4次查詢操作,先檢查a再檢查a中的b,再檢查b中的c,如此往下。所以如果這樣的表達式重復出現,只要可能,應該盡量少出現這樣的表達式,可以利用局部變數,把它放入一個臨時的地方進行查詢。這一點可以和循環結合起來,因為我們常常要根據字元串、數組的長度進行循環,而通常這個長度是不變的,比如每次查詢a.length,就要額外進行一個操作,而預先把varlen=a.length,則就少了一次查詢。字元串連接如果是追加字元串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr。如果要連接多個字元串,應該少使用+=,如s+=a;s+=b;s+=c;應該寫成s+=a + b + c;而如果是收集字元串,比如多次對同一個字元串進行+=操作的話,最好使用一個緩存。怎麼用呢?使用JavaScript數組來收集,最後使用join方法連接起來,如下var buf = new Array();for(var i = 0; i < 100; i++){ buf.push(i.toString());}var all = buf.join("");類型轉換類型轉換是大家常犯的錯誤,因為JavaScript是動態類型語言,你不能指定變數的類型。1.把數字轉換成字元串,應用"" + 1,雖然看起來比較丑一點,但事實上這個效率是最高的,性能上來說:("" + ) > String() > .toString() > new String() 這條其實和下面的「直接量」有點類似,盡量使用編譯時就能使用的內部操作要比運行時使用的用戶操作要快。String()屬於內部函數,所以速度很快,而.toString()要查詢原型中的函數,所以速度遜色一些,new String()用於返回一個精確的副本。2.浮點數轉換成整型,這個更容易出錯,很多人喜歡使用parseInt(),其實parseInt()是用於將字元串轉換成數字,而不是浮點數和整型之間的轉換,我們應該使用Math.floor()或者Math.round()。另外,和第二節的對象查找中的問題不一樣,Math是內部對象,所以Math.floor()其實並沒有多少查詢方法和調用的時間,速度是最快的。3.對於自定義的對象,如果定義了toString()方法來進行類型轉換的話,推薦顯式調用toString(),因為內部的操作在嘗試所有可能性之後,會嘗試對象的toString()方法嘗試能否轉化為String,所以直接調用這個方法效率會更高使用直接量其實這個影響倒比較小,可以忽略。什麼叫使用直接量,比如,JavaScript支持使用 [param,param,param,...]來直接表達一個數組,以往我們都使用new Array(param,param,...),使用前者是引擎直接解釋的,後者要調用一個Array內部構造器,所以要略微快一點點。同樣,var foo = {}的方式也比var foo = new Object();快,var reg = /../;要比var reg=new RegExp()快。字元串遍歷操作對字元串進行循環操作,譬如替換、查找,應使用正則表達式,因為本身JavaScript的循環速度就比較慢,而正則表達式的操作是用C寫成的語言的API,性能很好。高級對象自定義高級對象和Date、RegExp對象在構造時都會消耗大量時間。如果可以復用,應採用緩存的方式。DOM相關插入HTML很多人喜歡在JavaScript中使用document.write來給頁面生成內容。事實上這樣的效率較低,如果需要直接插入HTML,可以找一個容器元素,比如指定一個div或者span,並設置他們的innerHTML來將自己的HTML代碼插入到頁面中。對象查詢使用[""]查詢要比.items()更快,這和前面的減少對象查找的思路是一樣的,調用.items()增加了一次查詢和函數的調用。創建DOM節點通常我們可能會使用字元串直接寫HTML來創建節點,其實這樣做無法保證代碼的有效性字元串操作效率低所以應該是用document.createElement()方法,而如果文檔中存在現成的樣板節點,應該是用cloneNode()方法,因為使用createElement()方法之後,你需要設置多次元素的屬性,使用 cloneNode()則可以減少屬性的設置次數——同樣如果需要創建很多元素,應該先准備一個樣板節點。定時器如果針對的是不斷運行的代碼,不應該使用setTimeout,而應該是用setInterval。setTimeout每次要重新設置一個定時器。其他腳本引擎據我測試Microsoft的JScript的效率較Mozilla的Spidermonkey要差很多,無論是執行速度還是內存管理上,因為JScript現在基本也不更新了。但SpiderMonkey不能使用ActiveXObject文件優化文件優化也是一個很有效的手段,刪除所有的空格和注釋,把代碼放入一行內,可以加快下載的速度,注意,是下載的速度而不是解析的速度,如果是本地,注釋和空格並不會影響解釋和執行速度。總結本文總結了我在JavaScript編程中所找到的提高JavaScript運行性能的一些方法,其實這些經驗都基於幾條原則:直接拿手頭現成的東西比較快,如局部變數比全局變數快,直接量比運行時構造對象快等等。盡可能少地減少執行次數,比如先緩存需要多次查詢的。盡可能使用語言內置的功能,比如串鏈接。盡可能使用系統提供的API,因為這些API是編譯好的二進制代碼,執行效率很高同時,一些基本的演算法上的優化,同樣可以用在JavaScript中,比如運算結構的調整,這里就不再贅述了。但是由於JavaScript是解釋型的,一般不會在運行時對位元組碼進行優化,所以這些優化仍然是很重要的。當然,其實這里的一些技巧同樣使用在其他的一些解釋型語言中,大家也可以進行參考。

❺ 如何讓aFleX腳本性能更好

盡管AX平台憑借其傑出的架構設計使得aFleX帶來的性能影響相對同類產品小很多,但根據aFleX的復雜度和編寫質量不同,對應用整體性能的影響還是存在一些差別的。本文就如何編寫更高效的aFleX進行簡單闡述。 變數、條件判斷、循環等的使用 1. 別使用aFlex! 不要因為好玩使用aFleX,除非必須。如果有相應的功能特性可以做到同樣功能,使用設備自身的功能。AX的HTTP模板中提供插入客戶端IP、URL 交換、HTTP頭刪除/插入/修改、HTTP重定向等豐富的功能,性能要比使用aFleX更好。 2. 避免沒必要的變數 除非必須,否則盡可能不要使用變數。變數創建、賦值等都需要耗費CPU資源,同時也會佔用內存資源(每個連接都會佔用一定位元組,在大並發用戶時影響會放大)。諸如HTTP::host 和 IP::client_addr等命令的執行結果已經緩存在內存中,將這些常量結果保存到變數是典型的資源浪費。只有在使用變數可以減少重復計算該值時才使用變數。下面例子中,前者就使用了沒有必要的變數。 未優化:set ip_addr [IP::client_addr] log 「Client address=$ip_addr」優化後:log 「Client address=[IP::client_addr]」 3. 使用{}括住expr表達式! 由於tcl語言的表達式有兩次替代,一次tcl解釋器替代和一次expr命令替代,盡可能使用{}括住表達式。這樣可以使tcl對於沒必要的二次替換的變數和命令結果只進行一次替代。 如set octet [expr 3 + [getfield [IP::client_addr] . 4]] 中[getfield [IP::client_addr] . 4]在tcl解釋器中替代一次,在進行expr計算時還有一次替代。 而在使用{}後,set octet [expr {3 + [getfield [IP::client_addr] . 4]}] 不需用第2次expr命令中的替代。 4. 條件判斷時遵循以下原則 盡可能使用if-elseif替代連續多個if。多個if時,即使匹配後仍然需要執行完所有if。if-elsif則會在首次匹配後退出條件判斷。 if-elseif中盡量把最可能的條件放到最前面。 盡可能使用switch替換if-elseif。switch可以讓代碼看起來簡單,也更優化。 5. 數據查詢時盡量使用tcl中的array替代list。多維矩陣的查詢膠質多個list查詢更高效。 6. 使用正確的操作符可以改善性能。如: 字元串比較使用eq和ne 數字比較使用 ==和 != 使用命令 [IP::addr] 比較地址 7. 盡可能避免使用正則表達式regex和正則表達式替代regsub。這兩個命令功能強大,但耗費資源也更多。有些情況必須使用正則表達式就不得不犧牲一些性能。可能的情況下盡可能使用以下替代命令。 starts_with, ends_with等替代regexp 以上只是部分常見的可以優化aFleX的地方,可以滿足大部分情況。針對非常復雜的aFleX優化,一方面需要非常熟悉tcl,另一方面需要熟悉aFleX命令工作機制,這時最好是藉助於廠家技術支持中心進行優化。

❻ linux性能調優都有哪幾種方法

1、為磁碟I/O調整Linux內核電梯演算法
在選擇文件系統後,有一些內核和掛載選項可能會影響到它的性能表現,其中一個內核設置是電梯演算法,通過此演算法,系統可以平衡低延遲需求,收集足夠的數據,從而有效地組織對磁碟的讀和寫請求。
2、禁用不必要的守護進程
伺服器上有很多守護進程或服務不是必需的,這些服務不但沒有發揮作用,還消耗了一定的內存和CPU,因此,需要將它們從伺服器移除,這一步最大的好處就是可以加快啟動時間,釋放內存。
3、關掉GUI
一般來說,Linux伺服器是不需要GUI的,所以管理任務都可以在命令行下完成,因此最好關掉GUI。
4、清理不需要的模塊或功能
在伺服器軟體包中有太多被啟動的功能或模塊實際上是不需要的,仔細看看Apache配置文件,確定FrontPage支持或其它額外的模塊是否真的要用到,如果不需要,應該毫不猶豫地從伺服器禁用掉,這樣有助於提高系統內存可用量,騰出更多資源給那些真正需要的軟體,讓它們運行得更快。
5、禁用控制面板
在Linux中,有許多流行的控制面板,如Cpanel,Plesk,Webmin和phpMyAdmin等,但是,禁用掉這些軟體包可以釋放出大約120MB內存,它們可以通過PHP腳本(盡管有些不安全),或命令行命令啟用,這樣做後,內存使用量大約可以下降30-40%。
6、改善Linux Exim伺服器性能
7、使用AES256增強gpg文件加密安全
為了提高備份文件或敏感信息的安全,許多Linux系統管理員都會使用gpg進行加密,它是一個開放的加密演算法,沒有什麼比它更安全的了。
8、遠程備份服務安全
安全是選擇遠程備份服務最重要的因素,大多數系統管理員都害怕兩件事:(黑客)可以刪除備份文件,不能從備份恢復系統。為了保證備份文件100%的安全,備份服務公司提供遠程備份伺服器,使用scp腳本或RSYNC通過SSH傳輸數據,這樣,沒有人可以直接進入和訪問遠程系統,因此,也沒有人可以從備份服務刪除數據。在選擇遠程備份服務提供商時,最好從多個方面了解其服務強壯性,如果可以,可以親自測試一下。

❼ 如何進行sql性能優化

這里分享下mysql優化的幾種方法。

1、首先在打開的軟體中,需要分別為每一個表創建 InnoDB FILE的文件。

❽ zipalign腳本怎麼優化

先科普一下,啥叫zipalign:(科普內容搜自度娘)

Android SDK中包含一個「zipalign」的工具,它能夠對打包的應用程序進行優化。在你的應用程序上運行zipalign,使得在運行時Android與應用程序間的交互更加有效率。因此,這種方式能夠讓應用程序和整個系統運行得更快。我們強烈推薦在新的和已經發布的程序上使用zipalign工具來得到優化後的版本——即使你的程序是在老版本的Android平台下開發的。這篇文章將描述zipalign如何有助於性能改善以及如何使用它來優化你的app。
在Android中,每個應用程序中儲存的數據文件都會被多個進程訪問:安裝程序會讀取應用程序的manifest文件來處理與之相關的許可權問題;Home應用程序會讀取資源文件來獲取應用程序的名和圖標;系統服務會因為很多種原因讀取資源(例如,顯示應用程序的Notification);此外,就是應用程序自身用到資源文件。
在Android中,當資源文件通過內存映射對齊到4位元組邊界時,訪問資源文件的代碼才是有效率的。但是,如果資源本身沒有進行對齊處理(未使用zipalign工具),它就必須回到老路上,顯式地讀取它們——這個過程將會比較緩慢且會花費額外的內存。

——————————分割線-------------------------------------------
所以,對系統程序和日常程序做一下zipalign是有用處的,好處是可以提升程序反應速度以及減少讀取時間【個人感受】(至於效果有多少就要看程序本身了。)

PC端的zipalign工具在android SDK工具包中,但是咱們懶,懶得下載sdk。所以現在在這里介紹一下在手機中進行zipalign的方法。
操作前的准備:
安卓手機一台(只要是1.6以上都可以 要root)以及RE管理器等可以讀寫系統文件的文件管理器一個。 還有就是附件中提供的壓縮包。
zipalign.zip (1.27 KB)
(解壓後有兩個後綴名為sh的腳本文件)

操作方法:
1、把附件中的壓縮包解壓,得到兩個sh腳本文件 (zipalign_data_apks.sh和zipalign_apks.sh),將其放到手機內存卡中。
2、斷開手機和電腦的鏈接。用文件管理器(這里示範的Root Explorer)將兩個sh文件移動到 /system 文件夾中。
3、修改兩個腳本的許可權(9個全選 )
4、修改後,依次點擊兩個腳本,按中間的執行(英文版的是execute)每個腳本執行後都有一個記錄出現,當看到「Automatic ZipAlign finished at 日期」的時候就完成了。