<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622b2fb2ff7f9c46a68e164a/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2fb2ff7f9c46a68e164a/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">RTO<span class="_ _0"></span>S<span class="_ _1"> </span><span class="ff2 sc1 ls1">姊妹花——</span><span class="ls2 ws1">Small R<span class="_ _2"></span>T<span class="_ _2"></span>OS<span class="_ _3"> </span><span class="ff2 sc1 ls3 ws0">与<span class="_"> </span></span><span class="ls4 ws0">STOS++<span class="ff2 sc1 ls1">简介</span><span class="ls3"> </span></span></span></div><div class="t m0 x2 h3 y2 ff3 fs1 fc0 sc0 ls5 ws0">1 <span class="_ _4"> </span><span class="ff4 sc1 ls6">简介</span><span class="ls3"> </span></div><div class="t m0 x3 h4 y3 ff5 fs2 fc0 sc0 ls3 ws0">在详细说明之前,<span class="_ _5"></span>我们先看图<span class="_ _6"> </span><span class="ff6">1</span>、<span class="_ _5"></span>图<span class="_ _6"> </span><span class="ff6">2<span class="_ _6"> </span></span>这两幅图。<span class="_ _5"></span>从两幅图中可以看出,<span class="_ _5"></span>图<span class="_ _6"> </span><span class="ff6">1<span class="_ _6"> </span></span>是<span class="_ _6"> </span><span class="ff6 ls7 ws2">Small R<span class="_ _2"></span>T<span class="_ _2"></span>OS</span></div><div class="t m0 x2 h4 y4 ff5 fs2 fc0 sc0 ls3 ws0">的一个例子的运行界面,而图<span class="_ _7"> </span><span class="ff6">1<span class="_ _7"> </span></span>的最下方的“<span class="ff6 ls7">045.3%</span>”为<span class="_ _7"> </span><span class="ff6 ls8">CPU<span class="_"> </span></span>的占有率<span class="_ _8"></span>。图<span class="_ _7"> </span><span class="ff6">2<span class="_ _7"> </span></span>是<span class="_ _7"> </span><span class="ff6 ls9">STOS++</span></div><div class="t m0 x2 h4 y5 ff5 fs2 fc0 sc0 ls3 ws0">的一个例子的运行界面,<span class="_ _9"></span>图<span class="_ _a"> </span><span class="ff6">2<span class="_"> </span></span>的最下方的<span class="_ _9"></span>“<span class="ff6 ls7">044.5%</span><span class="lsa">”也<span class="_ _b"></span>是<span class="_ _3"> </span><span class="ff6 lsb">CPU<span class="_"> </span></span></span>的占有率。<span class="_ _9"></span>这两幅图很相似,</div><div class="t m0 x2 h4 y6 ff5 fs2 fc0 sc0 ls3 ws0">事实上这两个例子的代码也很相似只是图<span class="_ _a"> </span><span class="ff6">1<span class="_"> </span></span>所示的例子是用<span class="_ _a"> </span><span class="ff6">c<span class="_"> </span></span>语言编写,<span class="_ _c"></span>其基于的操作系统</div><div class="t m0 x2 h4 y7 ff5 fs2 fc0 sc0 ls3 ws0">为<span class="_ _a"> </span><span class="ff6 lsc ws3">Small R<span class="_ _2"></span>T<span class="_ _2"></span>OS V1.51<span class="ff5 lsd ws0">,而<span class="_ _8"></span>图<span class="_ _d"> </span><span class="ff6 ls3">2<span class="_"> </span><span class="ff5">所示的例子是用<span class="_ _a"> </span></span><span class="lse">c++</span><span class="ff5">语言编写,<span class="_ _2"></span>其基于的操作系统为<span class="_ _a"> </span><span class="ff6 lsf">STOS++ </span></span></span></span></span></div><div class="t m0 x2 h4 y8 ff6 fs2 fc0 sc0 lsf ws0">V1.51<span class="ff5 ls10">。而<span class="_ _7"> </span></span><span class="ls3 ws4">Small R<span class="_ _2"></span>T<span class="_ _2"></span>OS<span class="_"> </span><span class="ff5 ws0">使用标准<span class="_ _a"> </span><span class="ff6">c<span class="_"> </span></span><span class="ls11">编写<span class="_ _8"></span>,而<span class="_ _a"> </span><span class="ff6 ls9">ST<span class="_ _2"></span>OS++<span class="_ _8"></span><span class="ff5 ls3">用<span class="_ _a"> </span></span><span class="ls12">c++<span class="ff5 ls3">编写,他们的代码也是极其相似</span></span></span></span></span></span></div><div class="t m0 x2 h4 y9 ff5 fs2 fc0 sc0 ls3 ws0">的。<span class="ff6"> </span></div><div class="t m0 x4 h4 ya ff6 fs2 fc0 sc0 ls3 ws0"> </div><div class="t m0 x5 h5 yb ff2 fs3 fc0 sc0 ls3 ws0"> </div><div class="t m0 x6 h4 yc ff4 fs4 fc0 sc0 ls3 ws0">图<span class="_ _e"> </span><span class="ff7 ls13 ws5">1 Small <span class="_ _f"></span>RT<span class="_ _2"></span>OS <span class="ff4 ls3 ws0">范例运行界面<span class="ff6 fs2"> </span></span></span></div><div class="t m0 x7 h4 yd ff5 fs2 fc0 sc0 ls3 ws0">大家仔细看一下两者的<span class="_ _a"> </span><span class="ff6 ls14">CPU<span class="_"> </span></span>占有率:基于<span class="_ _a"> </span><span class="ff6 ls15 ws6">Small R<span class="_ _2"></span>T<span class="_ _2"></span>OS<span class="_ _a"> </span><span class="ff5 ls3 ws0">是</span></span></div><div class="t m0 x8 h6 ye ff1 fs1 fc0 sc0 ls3 ws0">45.3%<span class="ff5 fs2">,而基于<span class="_ _a"> </span><span class="ff6 ls9">STOS++</span>是</span></div><div class="t m0 x2 h6 yf ff1 fs1 fc0 sc0 ls3 ws0">44.5<span class="ff5 sc1">%<span class="fs2 sc0 ls16">!很意外吧,<span class="ff4 ls3">用<span class="_ _10"> </span><span class="ff7 ls17">c++</span><span class="ls16">语言编写的程序的执行效率居然更高!</span></span>事实<span class="_ _8"></span>上,这个结果对于</span></span></div><div class="t m0 x2 h4 y10 ff5 fs2 fc0 sc0 ls3 ws0">笔者来说也很意外,<span class="_ _9"></span>笔者本以为<span class="_ _a"> </span><span class="ff6 ls18">STOS++</span>的效率会稍微低一点。<span class="_ _11"></span>笔者可以保证其应用程序对</div><div class="t m0 x2 h4 y11 ff5 fs2 fc0 sc0 ls3 ws0">执行效率的影响很小(可以参考源代码)<span class="_ _5"></span>,而两个<span class="_ _a"> </span><span class="ff6 ls19">RT<span class="_ _8"></span>O<span class="_ _0"></span>S<span class="_ _d"> </span></span>的代码相似,又都是使用<span class="_ _a"> </span><span class="ff6 ls1a">ADS1.2</span>,</div><div class="t m0 x2 h4 y12 ff5 fs2 fc0 sc0 ls3 ws0">编译参数也没有区别,<span class="_ _12"></span>唯一的解释是编译器对<span class="_ _a"> </span><span class="ff6 ls12">c++</span>的<span class="_ _a"> </span><span class="ff6 ls1b">this<span class="_ _7"> </span></span>指针优化得很好。<span class="_ _12"></span>当然,<span class="_ _12"></span>换一个编</div><div class="t m0 x2 h4 y13 ff5 fs2 fc0 sc0 ls3 ws0">译器其效果可能不一样。<span class="ff6"> </span></div><div class="t m0 x7 h4 y14 ff5 fs2 fc0 sc0 ls3 ws0">至于占用存储的的比较,从编译结果来看,<span class="_ _2"></span><span class="ff6 ls9">STOS++<span class="ff5 ls3">的代码会大一点,<span class="_ _2"></span>但则没有普遍意</span></span></div><div class="t m0 x2 h4 y15 ff5 fs2 fc0 sc0 ls3 ws0">义:<span class="_ _f"></span>作例子的程序并没有发挥<span class="_ _e"> </span><span class="ff6 lse">c++</span>的优势。<span class="_ _f"></span>而<span class="_ _a"> </span><span class="ff6 ls18">ST<span class="_ _2"></span>OS<span class="_ _8"></span>++<span class="ff5 ls3">的<span class="_ _a"> </span></span><span class="ls1c">ram<span class="_"> </span><span class="ff5 ls3">占用小一点,<span class="_ _13"></span>但这已没有意义:</span></span></span></div><div class="t m0 x2 h4 y16 ff6 fs2 fc0 sc0 ls1d ws0">C++<span class="ff5 ls3">的对象会占用一些堆空间,在实际运行时其占用的空间可能不比<span class="_ _a"> </span><span class="ff6 ws4">Small R<span class="_ _12"></span>TOS<span class="_"> </span><span class="ff5 ws0">小。<span class="ff6"> </span></span></span></span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>