From c18b603399019b40e4120258149d74d46aa3a7dd Mon Sep 17 00:00:00 2001 From: "yihua.huang" Date: Mon, 4 Nov 2013 07:09:44 +0800 Subject: [PATCH] optimize long compare --- .../webmagic/scheduler/PriorityScheduler.java | 5 +++-- .../codecraft/webmagic/utils/NumberUtils.java | 17 +++++++++++++++++ .../webmagic/model/samples/OschinaBlog.java | 6 ++++-- 3 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 webmagic-core/src/main/java/us/codecraft/webmagic/utils/NumberUtils.java diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/scheduler/PriorityScheduler.java b/webmagic-core/src/main/java/us/codecraft/webmagic/scheduler/PriorityScheduler.java index 7ce44f0..fa951e1 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/scheduler/PriorityScheduler.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/scheduler/PriorityScheduler.java @@ -4,6 +4,7 @@ import org.apache.http.annotation.ThreadSafe; import org.apache.log4j.Logger; import us.codecraft.webmagic.Request; import us.codecraft.webmagic.Task; +import us.codecraft.webmagic.utils.NumberUtils; import java.util.Comparator; import java.util.HashSet; @@ -30,14 +31,14 @@ public class PriorityScheduler implements Scheduler { private PriorityBlockingQueue priorityQueuePlus = new PriorityBlockingQueue(INITIAL_CAPACITY, new Comparator() { @Override public int compare(Request o1, Request o2) { - return -(new Long(o1.getPriority()).compareTo(o2.getPriority())); + return -NumberUtils.compareLong(o1.getPriority(), o2.getPriority()); } }); private PriorityBlockingQueue priorityQueueMinus = new PriorityBlockingQueue(INITIAL_CAPACITY, new Comparator() { @Override public int compare(Request o1, Request o2) { - return -(new Long(o1.getPriority()).compareTo(o2.getPriority())); + return -NumberUtils.compareLong(o1.getPriority(), o2.getPriority()); } }); diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/utils/NumberUtils.java b/webmagic-core/src/main/java/us/codecraft/webmagic/utils/NumberUtils.java new file mode 100644 index 0000000..55e1851 --- /dev/null +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/utils/NumberUtils.java @@ -0,0 +1,17 @@ +package us.codecraft.webmagic.utils; + +/** + * @author yihua.huang@dianping.com + */ +public abstract class NumberUtils { + + public static int compareLong(long o1, long o2) { + if (o1 < o2) { + return -1; + } else if (o1 == o2) { + return 0; + } else { + return 1; + } + } +} diff --git a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaBlog.java b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaBlog.java index d6b9c9d..9e7fa88 100644 --- a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaBlog.java +++ b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaBlog.java @@ -1,6 +1,5 @@ package us.codecraft.webmagic.model.samples; -import org.apache.http.HttpHost; import us.codecraft.webmagic.Site; import us.codecraft.webmagic.Task; import us.codecraft.webmagic.model.OOSpider; @@ -26,7 +25,10 @@ public class OschinaBlog{ private List tags; public static void main(String[] args) { - OOSpider.create(Site.me().setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36").addStartUrl("http://my.oschina.net/flashsword/blog").setSleepTime(0).setHttpProxy(new HttpHost("127.0.0.1",8888)) + OOSpider.create(Site.me() + .setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36").addStartUrl("http://my.oschina.net/flashsword/blog") + .setSleepTime(0) + .setRetryTimes(3) ,new PageModelPipeline() { @Override public void process(Object o, Task task) {