diff options
author | Arne Schwabe <arne@rfc2549.org> | 2014-02-17 19:50:36 +0100 |
---|---|---|
committer | Arne Schwabe <arne@rfc2549.org> | 2014-02-17 19:50:36 +0100 |
commit | b79286ec96f5853ba53a73b62b985b12d87d8af0 (patch) | |
tree | 20c1d22a53ae0624cc19ccd7df91b8e3e2418529 | |
parent | 0c3f0cae9bcfc862052e9ccc137a63f9587002a2 (diff) |
BigInteger arithmetic is slow as hell. Cache getFirst/Last address
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java | 10 | ||||
-rwxr-xr-x | main/src/main/res/values/strings.xml | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java b/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java index c7d09065..54470962 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java +++ b/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java @@ -15,6 +15,8 @@ public class NetworkSpace { public int networkMask; private boolean included; private boolean isV4; + private BigInteger firstaddr; + private BigInteger lastaddr; @Override @@ -55,12 +57,16 @@ public class NetworkSpace { } public BigInteger getLastAddress() { - return getMaskedAddress(true); + if(lastaddr==null) + lastaddr= getMaskedAddress(true); + return lastaddr; } public BigInteger getFirstAddress() { - return getMaskedAddress(false); + if (firstaddr==null) + firstaddr=getMaskedAddress(false); + return firstaddr; } diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml index 8c643f6d..3b9b9c0f 100755 --- a/main/src/main/res/values/strings.xml +++ b/main/src/main/res/values/strings.xml @@ -220,7 +220,7 @@ <string name="openvpn_log">OpenVPN Log</string> <string name="import_config">Import OpenVPN configuration</string> <string name="battery_consumption_title">Battery consumption</string> - <string name="baterry_consumption">In my personal tests the main reason for high battery consumption of OpenVPN are the keepalive packets. Most OpenVPN servers have a configuration directive like \'keepalive 10 60\' which causes the client and server to exchange keepalive packets every ten seconds. <p> While these packets are small and do not use much traffic, they keep the mobile radio network busy and increase the energy consumption. (See also <a href="http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine">The Radio State Machine | Android Developers</a>) <p> This keepalive setting cannot be changed on the client. Only the system administrator of the OpenVPN can change the setting. <p> Unfortunately using a keepalive larger than 60 seconds with UDP can cause some NAT gateways to drop the connection due to an inactivity timeout. Using TCP with a long keepalive timeout works, but tunneling TCP over TCP performs extremely poorly on connections with high packet loss. (See <a href="http://sites.inka.de/bigred/devel/tcp-tcp.html">Why TCP Over TCP Is A Bad Idea</a>)</string> + <string name="baterry_consumption">In my personal tests the main reason for high battery consumption of OpenVPN are the keepalive packets. Most OpenVPN servers have a configuration directive like \'keepalive 10 60\' which causes the client and server to exchange keepalive packets every ten seconds. <p> While these packets are small and do not use much traffic, they keep the mobile radio network busy and increase the energy consumption. (See also <a href="http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine">The Radio State Machine | Android Developers</a>) <p> This keepalive setting cannot be changed on the client. Only the system administrator of the OpenVPN can change the setting. <p> Unfortunately using a keepalive larger than 60 seconds with UDP can cause some NAT gateways to drop the connection due to an inactivity timeout. Using TCP with a long keep alive timeout works, but tunneling TCP over TCP performs extremely poorly on connections with high packet loss. (See <a href="http://sites.inka.de/bigred/devel/tcp-tcp.html">Why TCP Over TCP Is A Bad Idea</a>)</string> <string name="faq_tethering">The Android Tethering feature (over WiFi, USB or Bluetooth) and the VPNService API (used by this program) do not work together. For more details see the <a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=34\">issue #34</a></string> <string name="vpn_tethering_title">VPN and Tethering</string> <string name="connection_retries">Connection retries</string> |