RHEL6.0 VNC远程桌面的简单配置
2012-04-04 10:26
363 查看
其实在例子二的基础上,我们进一步的分析,可以把缓存10个结果换成缓存100个结果,性能可以得到进一步提升:
public class GoogleFn {
private static int MAX = 13200000;
private static int MAX2 = MAX / 10;
private static int MAX3 = MAX2 / 10;
private static int count(int n) {
int count = 0;
while (n > 0) {
int mod = n % 10;
if (mod == 1)
count++;
n = n / 10;
}
return count;
}
private static void method1() {
long start = System.currentTimeMillis();
int result = 0;
for (int i = 0; i < MAX2; i++) {
int number = i * 10;
int value = count(number);
for (int j = 0; j < 10; j++) {
result += value;
if (j == 1) {
result++;
}
int x = number + j;
if (result == x && x != 0) {
print(x, start);
}
}
}
}
private static void method2() {
long start = System.currentTimeMillis();
int result = 0;
for (int i = 0; i < MAX3; i++) {
int number = i * 100;
int value = count(number);
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
int x = number + j * 10 + k;
result += value;
if (j == 1) {
result++;
}
if (k == 1) {
result++;
}
if (result == x && x != 0) {
print(x, start);
}
}
}
}
}
private static void print(int n, long start) {
System.out.println("Find " + n + ", "
+ (System.currentTimeMillis() - start) + "ms");
}
public static void main(String[] args) {
method1();
method2();
}
}
运行结果:
Find 1, 0ms
Find 199981, 16ms
Find 199982, 16ms
Find 199983, 16ms
Find 199984, 16ms
Find 199985, 16ms
Find 199986, 16ms
Find 199987, 16ms
Find 199988, 16ms
Find 199989, 16ms
Find 199990, 16ms
Find 200000, 16ms
Find 200001, 16ms
Find 1599981, 78ms
Find 1599982, 78ms
Find 1599983, 78ms
Find 1599984, 78ms
Find 1599985, 78ms
Find 1599986, 78ms
Find 1599987, 78ms
Find 1599988, 78ms
Find 1599989, 78ms
Find 1599990, 78ms
Find 2600000, 125ms
Find 2600001, 125ms
Find 13199998, 625ms
Find 1, 0ms
Find 199981, 16ms
Find 199982, 16ms
Find 199983, 16ms
Find 199984, 16ms
Find 199985, 16ms
Find 199986, 16ms
Find 199987, 16ms
Find 199988, 16ms
Find 199989, 16ms
Find 199990, 16ms
Find 200000, 16ms
Find 200001, 16ms
Find 1599981, 31ms
Find 1599982, 31ms
Find 1599983, 31ms
Find 1599984, 31ms
Find 1599985, 31ms
Find 1599986, 31ms
Find 1599987, 31ms
Find 1599988, 31ms
Find 1599989, 31ms
Find 1599990, 31ms
Find 2600000, 47ms
Find 2600001, 47ms
Find 13199998, 219ms
可以看出,缓存100个结果比缓存10个结果又快了近3倍,这个时候我们可能会想,那么我缓存1000个结果呢,很遗憾,按照这个方法缓存1000个的结果和缓存100个结果无异。当然,肯定还有其他的更优解。
public class GoogleFn {
private static int MAX = 13200000;
private static int MAX2 = MAX / 10;
private static int MAX3 = MAX2 / 10;
private static int count(int n) {
int count = 0;
while (n > 0) {
int mod = n % 10;
if (mod == 1)
count++;
n = n / 10;
}
return count;
}
private static void method1() {
long start = System.currentTimeMillis();
int result = 0;
for (int i = 0; i < MAX2; i++) {
int number = i * 10;
int value = count(number);
for (int j = 0; j < 10; j++) {
result += value;
if (j == 1) {
result++;
}
int x = number + j;
if (result == x && x != 0) {
print(x, start);
}
}
}
}
private static void method2() {
long start = System.currentTimeMillis();
int result = 0;
for (int i = 0; i < MAX3; i++) {
int number = i * 100;
int value = count(number);
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
int x = number + j * 10 + k;
result += value;
if (j == 1) {
result++;
}
if (k == 1) {
result++;
}
if (result == x && x != 0) {
print(x, start);
}
}
}
}
}
private static void print(int n, long start) {
System.out.println("Find " + n + ", "
+ (System.currentTimeMillis() - start) + "ms");
}
public static void main(String[] args) {
method1();
method2();
}
}
运行结果:
Find 1, 0ms
Find 199981, 16ms
Find 199982, 16ms
Find 199983, 16ms
Find 199984, 16ms
Find 199985, 16ms
Find 199986, 16ms
Find 199987, 16ms
Find 199988, 16ms
Find 199989, 16ms
Find 199990, 16ms
Find 200000, 16ms
Find 200001, 16ms
Find 1599981, 78ms
Find 1599982, 78ms
Find 1599983, 78ms
Find 1599984, 78ms
Find 1599985, 78ms
Find 1599986, 78ms
Find 1599987, 78ms
Find 1599988, 78ms
Find 1599989, 78ms
Find 1599990, 78ms
Find 2600000, 125ms
Find 2600001, 125ms
Find 13199998, 625ms
Find 1, 0ms
Find 199981, 16ms
Find 199982, 16ms
Find 199983, 16ms
Find 199984, 16ms
Find 199985, 16ms
Find 199986, 16ms
Find 199987, 16ms
Find 199988, 16ms
Find 199989, 16ms
Find 199990, 16ms
Find 200000, 16ms
Find 200001, 16ms
Find 1599981, 31ms
Find 1599982, 31ms
Find 1599983, 31ms
Find 1599984, 31ms
Find 1599985, 31ms
Find 1599986, 31ms
Find 1599987, 31ms
Find 1599988, 31ms
Find 1599989, 31ms
Find 1599990, 31ms
Find 2600000, 47ms
Find 2600001, 47ms
Find 13199998, 219ms
可以看出,缓存100个结果比缓存10个结果又快了近3倍,这个时候我们可能会想,那么我缓存1000个结果呢,很遗憾,按照这个方法缓存1000个的结果和缓存100个结果无异。当然,肯定还有其他的更优解。
相关文章推荐
- 基于RHEL6.0实现VNC远程桌面连接的配置
- CentOS 6.0 VNC远程桌面配置方法
- RHEL 5.4 VNC的配置(远程管理,桌面共享)
- CentOS 6.0 VNC远程桌面配置[转]
- CentOS 6.0 VNC远程桌面配置
- CentOS 6.0 VNC远程桌面配置
- CentOS 6.0 VNC远程桌面配置方法(转帖)
- RHEL7 配置VNC远程桌面工具
- RHEL7 配置VNC远程桌面
- CentOS 6.0 VNC远程桌面配置
- Centos 6.0配置VNC开启远程桌面
- linux远程桌面vnc服务配置详细教程
- Ubuntu远程桌面xface VNC配置
- linux配置tigervnc连接远程桌面
- Ubuntu远程桌面xface VNC配置
- vnc配置linux远程桌面连接
- Linux 配置vnc,开启linux远程桌面
- Ubuntu 11.10 通过配置vnc使windows可以远程桌面,自动启动【转】
- Ubuntu远程桌面xface VNC配置
- Linux配置vnc,实现linux远程桌面