我有一个char长度为175,000 的指针数组.每个指针指向一个长度为100的c字符串数组,每个字符都是1或0.我需要比较字符串之间的差异.
char* arr[175000];
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有两个for循环,我将每个字符串与每个其他字符串进行比较.比较函数基本上采用两个c字符串并返回一个整数,该整数是数组的差异数.
这在我的4核机器上花了很长时间.上次我离开它运行45分钟,它从未完成执行.请告知更快的解决方案或一些优化.
例:
000010
000001
Run Code Online (Sandbox Code Playgroud)
由于最后两位不匹配,因此差异为2.
在我计算差异后,我将值存储在另一个数组中
int holder;
for(int x = 0;x < UsedTableSpace; x++){
int min = 10000000;
for(int y = 0; y < UsedTableSpace; y++){
if(x != y){
//compr calculates difference between two c-string arrays
int tempDiff =compr(similarity[x]->matrix, similarity[y]->matrix);
if(tempDiff < min){
min = tempDiff;
holder = y;
}
}
}
similarity[holder]->inbound++;
}
Run Code Online (Sandbox Code Playgroud) 我最近注意到,使用循环扫描长数组会降低缓存性能.你能解释一下为什么会发生这种情况以及这个问题的解决方法.我正在使用C/C++开发Linux平台
如何在每个活动中包含此代码段,而无需在每个活动中明确复制和粘贴代码?例如,我可以将它放在一个地方,所有其他活动都会引用这段代码吗?
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
// do something
return super.dispatchTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud) 如果没有JVM,android如何运行java程序,我知道这是一个delvik vm但是它做了什么?它是如何运行java应用程序的?
我想知道如何使用accept获取连接到服务器上的套接字的客户端的IP地址.我该怎么做?getpeername返回错误的IP地址,我似乎无法找到另一种方法.
在服务器上,在accept返回后,我这样做:
char buf[INET_ADDRSTRLEN];
struct sockaddr name; socklen_t len = sizeof(name);
getpeername(sock_fd, &name, &len); //sock_fd is the socket im using
inet_ntop(AF_INET, &name, buf, INET_ADDRSTRLEN);
string ip = buf;
Run Code Online (Sandbox Code Playgroud) 我想使用侦听器从屏幕上捕获所有运动事件,例如,如果我在屏幕上从上到下滑动,将会有一个向下的触摸、触摸移动和向上触摸。由于此触摸将覆盖多个视图,例如线性视图、按钮和文本字段,我尝试将触摸侦听器附加到所有视图,但我会得到错误数据,例如我会在没有触摸的情况下进行触摸等等。请告知一种可以实现这一目标的方法。
下面我有一个来自我的服务器代码和客户端代码的代码段.我的客户端向服务器发送一个成功接收的整数,然后我将一个长度为str_len的字符串发送到服务器.服务器中的第二次读取不起作用,它阻塞而不读取任何内容.当我退出客户端时,服务器打印出它没有读取任何内容.怎么了?
//Server code
bzero(buffer,256);
n = read(newsockfd,buffer,255);
if (n < 0) error("ERROR reading from socket");
unsigned int *length = new unsigned int;
memcpy(length, buffer, sizeof(int));
cout << "Length : " << *length << endl;
int len = *length + 1;
char buffIn[len+1];
bzero(buffIn,len);
//ok msg?
n = read(newsockfd,buffIn,len);
if (n < 0) error("ERROR reading from socket");
cout << "value of n" << n << endl;
printf("Received : %s\n", buffIn);
//client method
void send(string req)
{
//Send string len
unsigned int …Run Code Online (Sandbox Code Playgroud) c ×4
c++ ×4
android ×3
java ×3
performance ×2
algorithm ×1
memo ×1
optimization ×1
sockets ×1
tcp ×1