小编Mik*_*e G的帖子

长阵列性能问题

我有一个char长度为175,000 的指针数组.每个指针指向一个长度为100的c字符串数组,每个字符都是10.我需要比较字符串之间的差异.

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++ algorithm optimization performance

1
推荐指数
1
解决办法
409
查看次数

长数组缓存问题

我最近注意到,使用循环扫描长数组会降低缓存性能.你能解释一下为什么会发生这种情况以及这个问题的解决方法.我正在使用C/C++开发Linux平台

c c++ performance memo

1
推荐指数
1
解决办法
273
查看次数

是否可以在Android上使用java来做到这一点?

如何在每个活动中包含此代码段,而无需在每个活动中明确复制和粘贴代码?例如,我可以将它放在一个地方,所有其他活动都会引用这段代码吗?

            @Override   
            public boolean dispatchTouchEvent(MotionEvent event) { 
                    // do something   

                    return super.dispatchTouchEvent(event);      

                }
Run Code Online (Sandbox Code Playgroud)

java android

1
推荐指数
1
解决办法
78
查看次数

如果没有JVM,android如何运行java应用程序

如果没有JVM,android如何运行java程序,我知道这是一个delvik vm但是它做了什么?它是如何运行java应用程序的?

java android

1
推荐指数
2
解决办法
5841
查看次数

如何找到套接字的IP地址c ++/c

我想知道如何使用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)

c c++ sockets

0
推荐指数
1
解决办法
1万
查看次数

如何使用侦听器/侦听器捕获所有运动事件

我想使用侦听器从屏幕上捕获所有运动事件,例如,如果我在屏幕上从上到下滑动,将会有一个向下的触摸、触摸移动和向上触摸。由于此触摸将覆盖多个视图,例如线性视图、按钮和文本字段,我尝试将触摸侦听器附加到所有视图,但我会得到错误数据,例如我会在没有触摸的情况下进行触摸等等。请告知一种可以实现这一目标的方法。

java android android-layout

0
推荐指数
1
解决办法
2020
查看次数

两次连续读取,第二次读取不起作用

下面我有一个来自我的服务器代码和客户端代码的代码段.我的客户端向服务器发送一个成功接收的整数,然后我将一个长度为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 c++ tcp

0
推荐指数
1
解决办法
1114
查看次数

标签 统计

c ×4

c++ ×4

android ×3

java ×3

performance ×2

algorithm ×1

android-layout ×1

memo ×1

optimization ×1

sockets ×1

tcp ×1