我一直在学习cpu功能,偶然发现了NEON.
从我所看到的,看起来NEON需要特定的编程来使用它,但这是完全正确的,或者具有此功能的cpus是否仍然找到方法来直到它并加快某些应用程序的媒体进程,即使没有它的具体代码?
我现在刚刚开始在HTTP中弄湿我的脚.我一直使用GET和POST计算简单的HTTP请求.我使用的网页是3行php检查正确的$ _GET []和$ _POST []然后只是回显字符"1".我使用POST和GET使用相同的单个短名称/值对,希望不需要数据包碎片来解决问题,所有这些都是在一个脱离UI线程的线程上完成的.在计时时,请求会在手机上多次循环.一切顺利.(见下面的代码)也就是说,我回复了"1"的回答.但是存在一个持续的时间问题.我观察到的是:
在第一次尝试中,发出请求的时间比GET和POST方法中的后续trys长得多.
其余的尝试对两者来说都要快得多.
GET总是比POST快.
所有这些都适用于3G和Wifi连接(但是Wifi的整体速度比预期的要快得多).
我已经尝试使用BasicResponseHandler(),并使用更多手动缓冲IO流方法,结果相同.
我相信我理解3.因为POST需要两个传输,一个用于'HTTP 100'然后返回数据包主体.- 它是否正确?
我的主要问题是第一次请求尝试中发生的事情是如此之慢?有时需要几秒钟(!).是网络是什么东西或Android将它放入创建某种队列的套接字?如果是Android,有没有办法更正确地编码并避免这种情况?是否有关于保持套接字打开以使其在执行期间只出现一次的问题?如果是这样,这样做是好的做法吗?不可否认,这个问题我最无能为力.
我已经找到了一些关于此的讨论,但没有一个直接达到这个方面.
-
GET和POST方法的基本代码如下所示(减去try/catches),并在UI的线程中执行,首先是GET方法然后是POST方法:(下面的输出)
获取部分内容:
public String[] HTTPGETIt(int numrounds)
{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter (CoreProtocolPNames.PROTOCOL_VERSION,HttpVersion.HTTP_1_1);
HttpGet GETRequest = new HttpGet("http://mypage.com/epoch.php?mynameis=tam");
ResponseHandler <String> MyBRH = new BasicResponseHandler();
String[] GETResult = new String[numrounds];
int i = 0;
long timestart, DT;
while(i < numrounds)
{
timestart = System.currentTimeMillis();
GETResult[i] = httpclient.execute(GETRequest, MyBRH);
DT = System.currentTimeMillis() - timestart;
Log.d(TAG, "(" + i + ") GET-Round Trip was "+ DT …Run Code Online (Sandbox Code Playgroud) 我一直在尝试各种计时方法的代码.创建延迟的一种方法是使用thread.sleep(millis)运行一个线程,但是很明确地说线程"唤醒"的时间并不完全准确,可能在此时间之前或之后.然后我遇到了一个定义,其中有一个选项可以使用thread.sleep(millis,nanos),其中nanos给出"额外的纳秒精度".
我的问题是如果thread.sleep()不是那么准确毫秒,那么添加额外的nanos给我们的用途是什么?添加此值是否会使睡眠方法突然变得更加准确,例如强制操作系统更严格或在监控时允许更高的优先级?此外,.join()具有相同的选项,我假设thread.sleep()部分的答案类似于.join()部分.谢谢.
我一直在阅读三星Galaxy(sgh-i897)上的cpuinfo文件来检索bogoMIPS值.刚刚学习如何解释这些信息.
最初我在一个加载线程的主要活动下做了这个,并且总是得到997.59的值.然后我将文件读取方法移动到服务中,因为直到很久以后我才在UI中不需要它.一旦我这样做,我读到的值变得非常不同,并且似乎每个应用程序启动都会发生变化,总是慢得多,就像在300到500范围内一样.
我的问题是:
Android OS/Linux是否会导致测量bogoMIPS值并定期修改cpuinfo文件?
如果是这样,有没有一种程序化的方式来强迫它?
为什么它会根据我是否从主服务线程中的服务中读取文件而有所不同?
最终,如果一个人想要最正确的数字,最好是简单地编写我们自己的时序循环,以便在我们需要时自己获取它?(假设它正在改变,由于cpu负载,无论如何总是?)
android ×4
arm ×1
cpu-speed ×1
http ×1
http-get ×1
http-post ×1
linux-kernel ×1
neon ×1
networking ×1
optimization ×1
performance ×1