json優化
可以用fastjson,速度比jsonlib快了不知道多少。用jackson都要比jsonlib強。
❷ 怎麼把大量數據以JSON格式儲存到文件中
得到數據對象 轉成json字元串然後寫入到文件
❸ json解析大數據 怎麼做內存優化 ios
1. 用ARC管理內存
ARC(Automatic ReferenceCounting, 自動引用計數)和iOS5一起發布,它避免了最常見的也就是經常是由於我們忘記釋放內存所造成的內存泄露。它自動為你管理retain和release的過程,所以你就不必去手動干預了。忘掉代碼段結尾的release簡直像記得吃飯一樣簡單。而ARC會自動在底層為你做這些工作。除了幫你避免內存泄露,ARC還可以幫你提高性能,它能保證釋放掉不再需要的對象的內存。
2. 在正確的地方使用 reuseIdentifier
一個開發中常見的錯誤就是沒有給UITableViewCells, UICollectionViewCells,甚至是UITableViewHeaderFooterViews設置正確的reuseIdentifier。
為了性能最優化,table view用`tableView:cellForRowAtIndexPath:`為rows分配cells的時候,它的數據應該重用自UITableViewCell。一個table view維持一個隊列的數據可重用的UITableViewCell對象。
不使用reuseIdentifier的話,每顯示一行table view就不得不設置全新的cell。這對性能的影響可是相當大的,尤其會使app的滾動體驗大打折扣。
自iOS6起,除了UICollectionView的cells和補充views,你也應該在header和footer views中使用reuseIdentifiers。
想要使用reuseIdentifiers的話,在一個table view中添加一個新的cell時在data source object中添加這個方法:
staticNSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView :CellIdentifier forIndexPath:indexPath];
這個方法把那些已經存在的cell從隊列中排除,或者在必要時使用先前注冊的nib或者class創造新的cell。如果沒有可重用的cell,你也沒有注冊一個class或者nib的話,這個方法返回nil。
3.盡量把views設置為透明
如果你有透明的Views你應該設置它們的opaque屬性為YES。
原因是這會使系統用一個最優的方式渲染這些views。這個簡單的屬性在IB或者代碼里都可以設定。
Apple的文檔對於為圖片設置透明屬性的描述是:
(opaque)這個屬性給渲染系統提供了一個如何處理這個view的提示。如果設為YES,渲染系統就認為這個view是完全不透明的,這使得渲染系統優化一些渲染過程和提高性能。如果設置為NO,渲染系統正常地和其它內容組成這個View。默認值是YES。
在相對比較靜止的畫面中,設置這個屬性不會有太大影響。然而當這個view嵌在scroll view里邊,或者是一個復雜動畫的一部分,不設置這個屬性的話會在很大程度上影響app的性能。
你可以在模擬器中用Debug\Color Blended Layers選項來發現哪些view沒有被設置為opaque。目標就是,能設為opaque的就全設為opaque!
4.避免過於龐大的XIB
iOS5中加入的Storyboards(分鏡)正在快速取代XIB。然而XIB在一些場景中仍然很有用。比如你的app需要適應iOS5之前的設備,或者你有一個自定義的可重用的view,你就不可避免地要用到他們。
如果你不得不XIB的話,使他們盡量簡單。嘗試為每個Controller配置一個單獨的XIB,盡可能把一個View Controller的view層次結構分散到單獨的XIB中去。
需要注意的是,當你載入一個XIB的時候所有內容都被放在了內存里,包括任何圖片。如果有一個不會即刻用到的view,你這就是在浪費寶貴的內存資源了。Storyboards就是另一碼事兒了,storyboard僅在需要時實例化一個view controller.
當家在XIB是,所有圖片都被chache,如果你在做OS X開發的話,聲音文件也是。Apple在相關文檔中的記述是:
當你載入一個引用了圖片或者聲音資源的nib時,nib載入代碼會把圖片和聲音文件寫進內存。在OS X中,圖片和聲音資源被緩存在named cache中以便將來用到時獲取。在iOS中,僅圖片資源會被存進named caches。取決於你所在的平台,使用NSImage 或UIImage的`imageNamed:`方法來獲取圖片資源。
5.不要阻塞主線程
永遠不要使主線程承擔過多。因為UIKit在主線程上做所有工作,渲染,管理觸摸反應,回應輸入等都需要在它上面完成。
一直使用主線程的風險就是如果你的代碼真的block了主線程,你的app會失去反應。
大部分阻礙主進程的情形是你的app在做一些牽涉到讀寫外部資源的I/O操作,比如存儲或者網路。
你可以使用`NSURLConnection`非同步地做網路操作:
+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue*)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler
或者使用像AFNetworking這樣的框架來非同步地做這些操作。
如果你需要做其它類型的需要耗費巨大資源的操作(比如時間敏感的計算或者存儲讀寫)那就用 Grand Central Dispatch,或者NSOperation和 NSOperationQueues.
下面代碼是使用GCD的模板
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// switch to a background thread and perform your expensive operation
dispatch_async(dispatch_get_main_queue(), ^{
// switch back to the main thread to update your UI
});
});
發現代碼中有一個嵌套的`dispatch_async`嗎?這是因為任何UIKit相關的代碼需要在主線程上進行。
6. 在Image Views中調整圖片大小
如果要在`UIImageView`中顯示一個來自bundle的圖片,你應保證圖片的大小和UIImageView的大小相同。在運行中縮放圖片是很耗費資源的,特別是`UIImageView`嵌套在`UIScrollView`中的情況下。
如果圖片是從遠端服務載入的你不能控制圖片大小,比如在下載前調整到合適大小的話,你可以在下載完成後,最好是用background thread,縮放一次,然後在UIImageView中使用縮放後的圖片。
7. 選擇正確的Collection
學會選擇對業務場景最合適的類或者對象是寫出能效高的代碼的基礎。當處理collections時這句話尤其正確。
一些常見collection的總結:
· Arrays: 有序的一組值。使用index來lookup很快,使用value lookup很慢,插入/刪除很慢。
· Dictionaries: 存儲鍵值對。用鍵來查找比較快。
· Sets: 無序的一組值。用值來查找很快,插入/刪除很快。
❹ 為什麼返回json比text還慢
玩游戲卡原因很多,建議做下清理,電腦卡原因很多,先排除硬體問題和網路原因
先檢專查下你的網路,用騰訊電腦管家屬一工具箱一網速測試,測試下是不是網速不行
我覺得可能是電腦垃圾
其次,可以打開機箱,清下主機灰塵,包括風扇上的內存上的,因為灰太多,散熱不好,也會使電腦運行過慢
再次,就有可能是電腦垃圾過多,暫用了空間,導致電腦卡,你可以用騰訊電腦管家的垃圾清理功能清理下垃圾,騰訊電腦管家一垃圾清理一掃描清理
再有,就是停止一些不必要的軟體在後台的運行,打開騰訊電腦管家一電腦加速一一鍵優化,優化一些你不需要的啟動軟體
還有最後一個可能,就是電腦中了病毒或木馬,導致你的電腦過慢,可以開啟騰訊電腦管家小紅傘查殺引擎進行掃毒。
❺ ajax非同步返回的json數據過長怎麼解決
$.post是提供簡單的封裝的ajax post請求的方法,沒辦法進行更詳細的配置。
改為使內用$.ajax把,裡面有一容個參數可以配置超時時間
如
$.ajax({
url:"xxx.php",
type:"POST",
dataType:"json",
timeout:60000, //超時時間,現在設置為60s。
success:function(data){
console.log(data);
}
});
更詳細的配置可以查看jQuery的API文檔。
另外需要你的伺服器端配置的超時時間不能小於jQuery裡面配置的。要不然jQuery還沒有超時,伺服器端直接返回timeout了。
同時優化一下服務端的處理,提高相應速度也是一個不錯的選擇。
❻ 請問:jQuery.POST 返回JSON 格式的數據 AJAX連接時長過長怎麼處理
$.post是提供簡單的封裝的ajax post請求的方法,沒辦法進行更詳細的配置。
改為使用$.ajax把,裡面有一內個參數可以配置超時容時間
如
$.ajax({
url:"xxx.php",
type:"POST",
dataType:"json",
timeout:60000, //超時時間,現在設置為60s。
success:function(data){
console.log(data);
}
});
更詳細的配置可以查看jQuery的API文檔。
另外需要你的伺服器端配置的超時時間不能小於jQuery裡面配置的。要不然jQuery還沒有超時,伺服器端直接返回timeout了。
同時優化一下服務端的處理,提高相應速度也是一個不錯的選擇。
❼ 接收json有上萬條數據,怎麼用Python優化解析
直接抄把JSON解析為數組,遍歷輸出
<?php
$str='[["61.191.41.130",80,3],["47.88.240.209",137,3],["88.85.240.60",8080,3]]'
$arr=json_decode($str,true);
foreach($arras$row){
echo$row[0].':'.$row[1].'<br>'
}
?>
❽ 如何優化很長的 JSON 數據
1,開啟來gzip,壓縮率很高,即便是很長源的文本,在網路中傳輸量也很小
2,不建議分次請求,除非是業務需要。連接次數過多,加大了並發的壓力。
3,提醒用戶點擊的做法可以通過按鈕反饋或loading條來做
4,如果有可能,考慮提前預讀
你可以這樣,在一個隱藏的 iframe 裡面請求伺服器,返回值是這樣的:
<script>
parent.notifyDataArrive(YOURS_JSON_DATA);
</script>
❾ 如何優化很長的JSON數據
我們知道,JSON作為一種輕量級的數據交換格式,現在被廣泛應用,特別是在API層,返回數專據格式基本上都是屬JSON。但是,JSON字元串如果過長,那在網路傳輸中也存在耗時的,站在性能角度我們需要合理優化JSON。
JSON優化建議
1、伺服器端開啟GZip壓縮
主流的服務端都支持GZip壓縮,對於一般的純文本內容GZip壓縮率在35%以上,這樣做的好處也很明顯:
減少JSON輸出大小,網路傳輸速度更快;
節省帶寬。
2、鍵名縮短
對於結果集而言,數據都是查詢循環輸出的,所以當我們把鍵名縮短也變相壓縮了JSON文本長度。比如原本的 {"name":"張三"} 我們可以寫為 {"a":"張三"}
3、JSON中的中文避免被轉為Unicode編碼
現在也有不少人喜歡將JSON中的漢字轉為Unicode編碼,此時JSON文本內容就會變得很長,如果避免漢字轉碼,可以控制文本長度。
以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我了解更多科技知識!
❿ json格式錯誤怎樣解決
json格式錯誤解決方法:
1、在用org.json.JSONObject 解析從網路獲取的json數據時,遇到JSONException: java.lang.String cannot be converted to JSONObject,列印字元串,查回看json字元串沒有問題;