1. 程式人生 > >你大爺還是你大爺,但是返回值已經不是那個返回值了

你大爺還是你大爺,但是返回值已經不是那個返回值了

為了提升系統性能,對用了很久的演算法庫(靜態庫)裡面的統計函式進行改造;將原來每個統計週期都釋放上一個統計週期數據結構,全部重新申請的做法,改成一次申請,後面每次都複用現有資料結構。

之前已經測試過這塊程式碼,當時感覺效能提升不是很明顯就沒有用,這兩天同樣是為了提升效能,將原來對不同統計專案的序列統計方法,改造成了每個統計專案都開一個執行緒,併發統計。

然後發現執行緒裡面就是釋放資料結構重新分配那塊挺費時,於是把複用資料結構的程式碼又用上了,可是執行過程中居然出現段錯誤,除錯發現新函式返回的結構體指標地址不能訪問,進一步跟進除錯發現函式裡面返回的地址居然跟外面接收到的地址不一致。。。


看返回前後兩個值其實是很接近的,返回後的值高位全被置1了,懷疑資料型別不一致引起的,但是接受返回值的變數和返回值都是指標型別,之前遇到過windows上dll裡面malloc的地址,dll外面不能用的情況,但是linux上好像沒查到相關資訊,而且老函式也是這麼傳指標的。。。

各種嘗試、求助都無果

然後翻編譯資訊突然瞟到編譯結果裡面的一條waring資訊

assignment makes pointer from integer without a case [enabled by default]

  • 這下清楚了,原來在庫裡面新增的函式,但是沒在標頭檔案裡面新增,編譯器不知道函式返回值型別,就預設成int了,指標強轉成int發生了變化。。。
  • 最後多執行緒和資料結構複用還是有效能提升的,另外gcc -g和gcc -O效能還是有差的
  • 另外是時候把waring全部解決掉了,每次看著waring刷屏都自動忽略了。。。出了問題找都找不到
  • 另外為毛有錢,資料量又大的地方要用效能差的機器了。。。cpu架構是e5_2650_v3(cat /proc/cpuinfo),記憶體Configured Clock Speed 1866MHz(dmidecode -t memory),其他點機器普遍是cpu e5_2650_v4,mem 2133MHz
  • 最後,其實上面優化完這個破機器還是跑不動。。。最後算了一下,不需要統計那麼多資料,將統計1000萬改成100萬就好了,速度大幅度提升。。。

相關推薦

大爺還是大爺但是返回已經那個返回

為了提升系統性能,對用了很久的演算法庫(靜態庫)裡面的統計函式進行改造;將原來每個統計週期都釋放上一個統計週期數據結構,全部重新申請的做法,改成一次申請,後面每次都複用現有資料結構。之前已經測試過這塊程式碼,當時感覺效能提升不是很明顯就沒有用,這兩天同樣是為了提升效能,將原來

無法安裝程式包“Newtonsoft.Json 6.0.4”。正在嘗試將此程式包安裝到目標為“.NETFramework,Version=v4.7”的專案中該程式包包含任何與該框架相容的程式集

今天在ConsoleApp裡面安裝SignalR.SelfHost,但是預設的SelfHost安裝的JSON檔案是6.0.4不相容.NET框架,只要手動安裝上JSON,再安裝SignalR.SelfHost的時候,就不會安裝預設的JSON了,也就不會出錯了。 Install-Packa

可以意淫我別傷害我

著名節目主持人金星很多人都認識,也同樣知道她還有一個身份:變性人。 她曾講述了一次在國外的經歷。 她坐計程車快到家時,司機對她說:“你能幫我一個忙嗎?”你們知道是什麼忙嗎?司機居然讓她幫忙“打飛機”。司機一直哀求她,從司機眼睛裡,她看到一個男人對生理需求的極度

USB無線網絡卡配置ICS失敗可以連線到SoftAP可能無法使用internet服務

http://zhidao.baidu.com/link?url=RK4mEG9H7SEDTk566xFctYHa3B_8JP0BBLSL9TdkWFpgObqOnW6GCw6InGpSv4VJVRmMszN2PNrQmbSxuPTdY_ 經過分析與測試發現出現該問

這幾個軟體可能沒聽過真的好用到爆!

1、Listary 第一款神器叫Listary,這是一款檔案搜尋的工具。 電腦上檔案一多,總是有些檔案不知道放哪了,雖然電腦也自帶檔案搜尋,但很慢;提起檔案搜尋工具,好多人應該還知道一個軟體,叫everything,搜尋的速度也很快。 與Every

一個岔路口分別通向誠實國和說謊國。 來兩個人已知一個是誠實國的另一個是說謊國的。 誠實國永遠說實話說謊國永遠說謊話。現在要去說謊國 但不知道應該走哪條路需要問這兩個人。請問應該怎麼問?(

一個岔路口分別通向誠實國和說謊國。 來了兩個人,已知一個是誠實國的,另一個是說謊國的。 誠實國永遠說實話,說謊國永遠說謊話。現在你要去說謊國, 但不知道應該走哪條路,需要問這兩個人。請問應該怎麼問?

馬化騰:大企業會存在一定要轉型

作為騰訊的掌門人,馬化騰低調而務實。 他注重使用者體驗,經常站在“小白”的角度思考,帶領騰訊以技術為驅動、以使用者價值為依歸,並最終以產品力而見長。 在領導力上,馬化騰強調群體智慧,讓不同團隊良性競爭,從而使騰訊不斷湧現明星產品。 2013年11月10日,騰訊舉辦“WE大會”。馬化騰分享了自己對網際網路

聽說在做數字化轉型瞭解中臺一下

在產業網際網路火爆的當下,在BATJ等網際網路大廠大肆推廣中臺建設成果的當下,各個行業的企業似乎都想做數字化轉型,建設業務中臺,但是中臺到底是啥,需要我們提前瞭解和學習,本文就是我的學習總結,希望能對你初步的理解中臺這個概念有所幫助。 一、學習背景   2019年夏,領導(我司CIO)送了我一本鍾華老師的

改變DIV的背景顏色透明度其中的文字受影響?

col 分享圖片 shadow type term color 技術分享 tex log 改變DIV的背景顏色透明度,但其中的文字不受影響?

遠程服務器可以ping通ssh連接上的問題解決

linux ssh MTU最近遇到遠程阿裏雲服務器可以ping通,但ssh連接不上的問題,分析過程如下。1.檢查遠程服務器的sshd服務是否正常,檢查結果是沒問題,端口也正常運行。2.用tcpdump src host xxx.xxx.xxx.xx進行抓包,發現有收到客戶端的包,說明sshd服務和基本連接都沒

Dual Path Networks(DPN)——一種結合ResNet和DenseNet優勢的新型卷積網絡結構。深度殘差網絡通過殘差旁支通路再利用特征,但殘差通道善於探索新特征。密集連接網絡通過密集連接通路探索新特征,但有高冗余度。

哪裏 esc 數學 itemid tip 視覺 bat tlist badge 如何評價Dual Path Networks(DPN)? 論文鏈接:https://arxiv.org/pdf/1707.01629v1.pdf在ImagNet-1k數據集上,淺DPN超過

使用 Go 語言開發大型 MMORPG 遊戲服務器怎麽樣?(非常穩定、捕獲所有異常、非常適合從頭開始大公司已經有現成的C++框架、所以會使用)

hive 有效 筆記 序列 優勢 nal 授權 登陸 RR 使用 Go 語言開發大型 MMORPG 遊戲服務器怎麽樣?和C Socket服務器比起來有什麽優劣?可行性怎麽樣? 從2013年起,經朋友推薦開始用Golang編寫遊戲登陸服務器, 配合C++做第三方平臺

如何實現dialog彈出activity介面顏色變暗

// 幫助彈出的dialog protected void helpDialog() { AlertDialog.Builder builder = new Builder(CyjlActivity.this); LayoutInflater inflater =

jquery checkbox 程式碼沒問題就是有時會起作用

用下面這個時,就不會出錯,但可以達到同樣的效果,所以基礎的javascript 還是很有用的啊 var tickids = document.getElementsByName("tickid");

拷貝建構函式的引數為什麼必須使用引用型別(避免無限遞迴拷貝其實編譯器已經強制要求

在C++中, 建構函式,拷貝建構函式,解構函式和賦值函式(賦值運算子過載)是最基本不過的需要掌握的知識。 但是如果我問你“拷貝建構函式的引數為什麼必須使用引用型別?”這個問題, 你會怎麼回答? 或許你會回答為了減少一次記憶體拷貝? 很慚愧的是,我的第一感覺也是這麼回答。不好還

271.已正確安裝證書https顯示連線安全(此頁面的部分內容安全)

1.問題描述 成功安裝證書,但是顯示連線不安全 此頁面的部分內容(例如影象)不安全 如下圖           2.問題原因 頁面引用(含有)http資源的檔案、圖片、指令碼 如:圖片引自其他http資源的網站  

運維新手們別再問需需要學PYTHON!!!

經常有人在群裡問,運維人員需不需要學開發?需不需要學PYTHON?PYTHON和SHELL有什麼區別?天天問這種好水的問題,我實在受不了,決定幫大家掃掃盲,求求新手們,以後別他媽瞎問了。 現階段,掌握一門開發語言已經成為高階運維工程師的必備計能,不會開發,你就不能充分理解你們系統的業務流程,你就不能

springboot的非同步任務(帶返回返回的處理)

package com.example.demo.async; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.

初入運維的小夥伴別再問需需要學Python

這篇文章來自百度知道(你可以搜尋“運維需不需要學Python”),或許有些觀點不一定正確,但運維學Python這事毫無疑問是主流了,不信可以到各大招聘網站,看看但凡招聘運維有程式設計技能的都會有Python(Shell不算)。   好吧,還是看看這位百度咆哮哥是怎麼說的: 經常有人在群裡問,運維人員