問題
サーバーベースの Java ソリューションでは、静的な値を持つより大きなルックアップ テーブルが必要です (約 300 kB ですが、データは翌年の新しい値で毎年増加します)。
通常、テーブルはデータベースに配置されますが、Java コードとして Java クラスに実装することについて説明しました。テーブル値を計算するメンバー関数を 1 つだけ使用してクラスをプログラムします。オブジェクト インスタンスやその他のメモリは必要ありません。コードだけです。
コード化された表
public class Lookup {
public static float getValue (int year, int c1, int c2, int c3) {
if (year == 2012) {
if (c1 == 1) { // about 70 kByte of code
....
return 7.34;
}
}
if (year == 2013) { // about 70 kByte of code
if (c1 == 1) {
....
return 8.23;
}
}
}
私の質問
テーブルは年々増加し、古い年はほとんど使用されません。年をパラメーターとして持つ関数ではなく、年ごとに関数を実装することは利点でしょうか? 毎年クラスを実施する利点はありますか? JVM は古い年が使用されていないことを検出し、メモリを解放しますか?
年ごとの特別行事
これは良いですか?メモリ消費に関してより柔軟ですか?
public class Lookup {
public static float getValue (int year, int c1, int c2, int c3) {
if (year == 2012) return Lookup.getValue2012 (c1, c2, c3);
if (year == 2013) return Lookup.getValue2012 (c1, c2, c3);
}
public static float getValue2012 (int year, int c1, int c2, int c3) {
if (c1==1) { // about 70 kByte of code
....
return 7.34;
}
}
public static float getValue2013 (int year, int c1, int c2, int c3) {
if (c1==1) { // about 70 kByte of code
....
return 8.23;
}
}
}
年間特別クラス
それともこちらの方がいいですか?メモリ使用量に関してより柔軟ですか?
public class Lookup {
public static float getValue (int year, int c1, int c2, int c3) {
if (year == 2012) return Lookup2012.getValue (c1, c2, c3);
if (year == 2013) return Lookup2013.getValue (c1, c2, c3);
}
}
public class Lookup2012 {
public static float getValue (int year, int c1, int c2, int c3) {
if (c1==1) { // about 70 kByte of code
....
return 7.34;
}
}
}
public class Lookup2013 {
public static float getValue (int year, int c1, int c2, int c3) {
if (c1==1) { // about 70 kByte of code
....
return 8.23;
}
}
}