工作四年了,一直想写点东西总结一下自己的所知所解,但是由于懒惰的性格,始终没有实施这个想法。在同事春哥的督促和鼓励下,我终于开始踏出了勇敢的一步!望一点陋见能够朋友们带来启发。废话不多说,进入正题。
今天我想和大家谈谈代码优化。
四年中我一直从事B/S信息系统方面的开发,可以说,从事B/S开发,离不开和数据库打交道。在过往的项目开发中,我一直认为大学中的算法在我们的B/S信息系统开发中几乎没有用,而数据库开发的效率确是我们需要解决的重点问题。关于数据库方面,经过几个项目的历练,也逐渐有点心得,以后有机会再谈。
诚然,算法确实在B/S信息系统开发中使用并不多,但是算法所给你形成的“效率第一”的观念是从事软件开发者必不可少的基本素质。很多同行,尤其是行业内的新人,由于经验缺乏,往往缺少这种效率的观念,仅仅满足于实现功能,实在落于下乘,长此以往,技术水平不可能有提高。
下面举一个例子,说说我在最近开发中优化代码的一点。
我们做的是在线的考试系统,要实现这么一个功能,统计分析出一份试卷中,学生客观题作答的干扰项。比如说,一份试卷有500个学生参加考试,某道题,A是正确答案,可是A只有100个选择了,而300个人选择了B,50个人选择了C,50个人选择了D。因此我们认为该题的干扰项伟B。
干扰项的定义为:除去正确答案外,其余选择人数最多的选项。
好,有了需求和定义,那么我们来实现这么一个功能。
我们的学生答案的存储格式如下,采用Xml格式存储:
<PaperInfoDetail>
<Ti1 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>continents</SA>
<SS>2.7</SS>
<El>
<EP1 EN="" EW="100">优秀|90</EP1>
</El>
</Ti1>
<Ti2 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>geologists</SA>
<SS>2.7</SS>
<El>
<EP1 EN="" EW="100">优秀|90</EP1>
</El>
</Ti2>
<Ti3 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>composed</SA>
<SS>2.7</SS>
<El>
<EP1 EN="" EW="100">优秀|90</EP1>
</El>
</Ti3>
<Ti4 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>Africa</SA>
<SS>2.7</SS>
<El>
<EP1 EN="" EW="100">优秀|90</EP1>
</El>
</Ti4>
<Ti5 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>believed</SA>
<SS>2.7</SS>
<El>
<EP1 EN="" EW="100">优秀|90</EP1>
</El>
</Ti5>
<Ti6 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>entirely</SA>
<SS>2.7</SS>
<El>
<EP1 EN="" EW="100">优秀|90</EP1>
</El>
</Ti6>
<Ti7 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>drifted</SA>
<SS>2.7</SS>
<El>
<EP1 EN="" EW="100">优秀|90</EP1>
</El>
</Ti7>
<Ti8 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>facinated</SA>
<SS>1.3</SS>
<El>
<EP1 EN="" EW="100">差|43.33333</EP1>
</El>
</Ti8>
<Ti9 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>It is almost as easy as to do with the coarse funny coast line of America and Europe. Fast lies plains and bones and footprints of dinosaur have been found on every continent in the world.</SA>
<SS>2.3</SS>
<El>
<EP1 EN="" EW="100">合格|76.66666</EP1>
</El>
</Ti9>
<Ti10 IDY="00601040037258L" Kd="K104" KN="复合式听写" OF="1" EF="1" DF="1">
<SA>They intend to try a matched continent by an examination of the ocean bottom at barriers places of the continental coast.If there is an answer, they believe they will find there</SA>
<SS>2.1</SS>
<El>
<EP1 EN="" EW="100">合格|70</EP1>
</El>
</Ti10>
<Ti11 IDY="01801120103836L" Kd="K112" KN="听长对话" OF="0" EF="1" DF="1">
<SA>A</SA>
<SS>5</SS>
</Ti11>
<Ti12 IDY="01801120103836L" Kd="K112" KN="听长对话" OF="0" EF="1" DF="1">
<SA>D</SA>
<SS>5</SS>
</Ti12>
<Ti13 IDY="01801120103836L" Kd="K112" KN="听长对话" OF="0" EF="1" DF="1">
<SA>C</SA>
<SS>5</SS>
</Ti13>
<Ti14 IDY="01801120103836L" Kd="K112" KN="听长对话" OF="0" EF="1" DF="1">
<SA>B</SA>
<SS>5</SS>
</Ti14>
<Ti15 IDY="01801120103837L" Kd="K112" KN="听长对话" OF="0" EF="1" DF="1">
<SA>B</SA>
<SS>5</SS>
</Ti15>
<Ti16 IDY="01801120103837L" Kd="K112" KN="听长对话" OF="0" EF="1" DF="1">
<SA>A</SA>
<SS>5</SS>
</Ti16>
<Ti17 IDY="01801120103837L" Kd="K112" KN="听长对话" OF="0" EF="1" DF="1">
<SA>C</SA>
<SS>5</SS>
</Ti17>
<Ti18 IDY="01801120103837L" Kd="K112" KN="听长对话" OF="0" EF="1" DF="1">
<SA>A</SA>
<SS>5</SS>
</Ti18>
<Ti19 IDY="01901130104383L" Kd="K113" KN="听短文填空" OF="0" EF="1" DF="1">
<SA>Death by drowning.In the United States alone, about 7000 children under 4 drowned each year.</SA>
<SS>0</SS>
</Ti19>
<Ti20 IDY="01901130104383L" Kd="K113" KN="听短文填空" OF="0" EF="1" DF="1">
<SA>Teaching children to swim while they are babies.</SA>
<SS>0</SS>
</Ti20>
<Ti21 IDY="01901130104383L" Kd="K113" KN="听短文填空" OF="0" EF="1" DF="1">
<SA>Most large towns in Florida and California.</SA>
<SS>0</SS>
</Ti21>
<Ti22 IDY="01901130104383L" Kd="K113" KN="听短文填空" OF="0" EF="1" DF="1">
<SA>The first is to eradicate the child's fear of water, the second is tautht to float, and then to move on to bring in arm and leg movement.</SA>
<SS>0</SS>
</Ti22>
<Ti23 IDY="01901130104383L" Kd="K113" KN="�%