跋涉不止(34)

编程入门 行业动态 更新时间:2024-10-21 23:03:54

跋涉不止(34)

跋涉不止(34)

兄弟走了我不独留

         从北京归来,短短一个月,我就对外包的公司的兴致荡然无存了,当我带领几个好兄弟从北京回来后,积攒了那么多的假期,我想让他们好好休息。我则在休息了三天后,继续选择上班,我想,我得把攒下来的调休假用在最需要的地方,老婆明年就要生了,我一定得攒到那个时候再用。

         估计几位兄弟也是这么想的,把假期用在最需要的地方吧,没过几天,他们也都悉数来上班了。

         辛苦鏖战三个月,西安这边公司没有一位领导出来说句鼓励的话,多少让人有点失望,对员工的漠不关心,有时候会对公司造成致命一击,这是后话。我其实不在乎这些,虚的我也不稀罕,可回来之后,还说我们在那边开销有点大,公司每人的活动费用从50降到了30,我超标了。大?听说过出差期间,活动经费不升反降的么?大家都远离家庭,努力奋斗,辛苦劳作,就换来这样一句话?我有点伤心,因为有部分钱,我还是自掏腰包呢,再说,北京的消费层次,和西安那时一个档次么?咋就不知道有所区分呢?算了埋在心底吧,这英雄当的窝囊。

         没过两天,更气人的事来了,公司看着我们几个在资源池中,暂时没活做,就告诉我和阿峙,让我们到以前的公司去做外包。这是啥事么!让我们就这么回头,去我工作了五年的地方去做外包?我信誓旦旦的走了出来,就混成这个样子?回去做外包了?那我出来干嘛?就为了被外包回去?公司就这么照顾员工感受的么?那还不如让我们辞职呢,我还真感觉丢人。我当然坚持不去。阿峙也一样。

         不过等等,难道是真想借机劝退我们?那好吧,我就主动辞职吧。

         于是,我先给人力资源的小俊妹打了个招呼,我说我决定辞职了,其实,我是为了探听虚实,得知公司的真实意图,然后再做决定。

         公司很快有了反应,一听说我要辞职,还是有点急的。只是有点病急乱投医了,公司竟然又给我原来在华为的那个负责人打电话。

         “刘琦现在脚好了,已经回来上班了,你们这边还需要人不?”

         “暂时不需要,等要了我给你打电话吧。”

         “那你看能否找个地方把他塞进去,否则他就辞职走个逑了。”

         “哦,那好,我给你找一下看。”

         这当然是我后来听公司其他人说的。

         第二天华为那边来了电话,说是急需要一个人,帮他们解决一个性能方面的问题,看我愿意过来不。就这样,公司在没有征得我是否同意的情况下,就已经替我做了决定。

         唉,既然是不能去以前的公司,那也只有这里了,总不能让公司闲养着我吧,毕竟公司是要挣钱的,就算在你身上不能挣钱,也不能陪吧。好吧,公司给我一个人情,那我得还这个人情吧,只是,重新归同一个人管,我心里多少还是有点难受的。

         就这样,我重新进入了华为的工作场地。好在我并不孤单,阿旭也一同被调过来和我共同战斗了。我们的项目是同一个,所干的却活不一样,但我的心情,前所未有的压抑。

         这个项目,我依然不知道和其他项目有什么联系,只知道似乎是要将抓包后的数据,进行解析后,分析分类入库。这似乎多少和我前段时间在华为做的东西,在功能上,很有点像。         这个项目的性能确实是低,整个项目从解析数据包,到分析协议,到数据统计再到入库,一个单线程下来的,这效率能高么?代码写的也实在是烂,几乎看不到一行注释,也没有配套文档,感情华为自己原来对这些也不在乎呀,定出的标准,难道只是用于和其有业务的其他公司么?我记得华为内部报纸上曾说,除了要当中国高科技的领军外,一定要多做贡献,帮助兄弟公司成长,只是这种帮助牺牲也太大了吧,不至于牺牲到自己都做这些吧。估计又是一个非常小的项目吧。后来得知,这个项目是不大,只有区区20左右的投入人员,似乎大家又都太忙,忙到连注视都没时间写,也似乎这个项目已经延期了一点时间。当然这个项目并非一无是处,其所有函数的接口定义还算清晰明了,我通过函数名,大概能了解每个函数要实现什么功能,至于里面怎么实现的,我先不管了。因为我已认定,单线程是这个项目的最大性能软肋。那就想法先更改了这个问题再说吧。

         华为里面还是有高手的,似乎是因为这个项目太急了,用户似乎是对性能严重不满意,因此华为特意调配了两个高手过来。华为毕竟是华为,这两个高手水平也确实高,一个是阿民,寖淫于Linux下的C的研究已经十年了,另一个名字我给忘了,他对这个项目似乎非常熟悉了解,技术也当真不错,整个过程下来,我跟着他两个还是学了些东西的,这相当值得我欣慰一番。

         我负责性能调整,因为我不熟悉内部代码,所以,我凭经验分析情况,我说我认为是单线程导致的性能严重下降。因此有两种解决方案,一是改为多线程,而多线程难免会触及到数据共享,线程间为了避免对数据造成破坏,自然要添加很多的锁。但如果是这样,似乎要调整的东西比较多,因为时间已比较紧张,这样改会牵扯的地方太多,外加我不熟悉代码,因此不可取。另一种方法是将整个项目拆分成多个进程,使用进程间通信机制,外加进程与进程间进行内存共享。这样即达到了多线程的效果,又避免更改太多的代码。效果可能也会不错,但这样一来,原本是一个进程的项目,就要拆分成三到四个进程,而且,这三到四个进程的启动,也必须有先后顺序,否则可能适得其反,且效果怎样,没有试过。在经过一翻讨论之后,由阿民拍板,我们选择了第二种方案,我和阿民兄负责进行变更。

         于是我就负责了将整个项目拆分成多进程,并预留各个进程间的共享接口,而阿民兄则负责实现共享内存。

         繁忙的工作开始了,可能是项目比较紧吧,华为那边比较着急,我晚上正常下班,竟然多次接到华为那边打来的电话,说我怎么吭一声都不,就走了。

         晕,我早上上班,按时来,下午下班按时走,有错么?自然是一百个不愿意,总不能被牵着鼻子走吧,于是我发了一次飚,联合阿旭,找到我们领导,当着华为人的面,毫不留情的说了一番火药味十足的话,最后直接说。“这样下去,你找其他人吧,我能力有限,做不了!”,而阿旭和我观点完全相同,亦是非常强硬,对我力挺,呵呵,好兄弟。

         一番斗争之后,情况并没有太多好转,想想也是,人家是甲方呀,又是我们公司求着让安排进来的,本就低了一等,哪还有更多的话语权,且不说这个问题了。

         两个星期后,功夫没有白费,性能被提高了4倍,华为那边很高兴,但是,后来发现,原来的代码存在很大的内存泄露,根本稳定运行不了几个小时,这能用么?于是,我又负责找出内存泄露。

         找内存泄露谈何容易,我对代码的功能了解,但对内部实现,几乎没有看过。两周来只顾搞性能了。我在使用valgrind这个软件无效后,决定采取最笨但通常也是最有效的方法----逐行屏蔽功能代码。

         屏蔽代码那是需要技巧的,你得确保你屏蔽之后,代码能正确运行,也要确保不会因为你的屏蔽代码,导致新的内存泄露,因为这样,你就很难定位到到底是哪里内存泄露了,甚至会造成很多不必要的干扰。代码不是很熟悉的我,着实有好几次,我以为找到了,很兴奋的跟踪下去的时候,发现是我屏蔽导致的问题。于是我就得耐心的熟悉这段代码的功能和处理逻辑,然后再去想可能的内存泄漏点,再进行屏蔽……。

         一个星期后,终于找到了这个内存泄露问题,其实很简单,是一个简单的字节对齐问题导致的。因为传递参数的时候,传的是无符号指针,而到了对这个参数解析的时候,则是进行了结构体的强转,这看似没有什么问题,但它一经牵扯到字节对齐,问题就严重了。问题找到了,自然就好解决。

         后来经过反复的性能验证,多轮测试,问题基本扫荡完了。我们也松了一口气了。而此时,我才知道,我们公司发生了翻天覆地的变化。

         阿旭一经辞职走人了,阿崎被公司带到我以前的公司面试,没有通过,自感愧对公司,自己辞职走了,阿栋也因为没有被我们以前公司应聘上,被劝退了。阿峙则勉为其难的被公司说服,到原来的公司面试,去之后,以前同事一阵惊讶诧异之后,非要追问为啥离开公司,虽然最后让他自己任选部门进,但羞愧难当的阿峙,还是决定辞职走人了。

         瞬间,和我一起并肩战斗的兄弟,竟然是几乎一个不剩了。我心里那个痛呀,也彻对公司失望,而公司西安这边的高层,也不知何故,接连发生地震。

         算了,我还是走吧,兄弟都走了,我独自留在这里,干嘛?于是,我刷新简历,从来没有如此急切的等候新公司的面试。

更多推荐

跋涉不止(34)

本文发布于:2023-06-27 08:12:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/908612.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!