Самый простой способ автоматически изменить значение "const" в Java во время компиляции - PullRequest
0 голосов
/ 08 апреля 2010

Этот вопрос соответствует моему назначению в универе, поэтому мне очень жаль говорить, что я не смогу принять какой-либо из перечисленных ниже лучших приемов за короткое время, знаете ли, назначение должно состояться завтра: (

ссылка на Лучший способ изменить const в Java в StackOverflow

По сути, единственная задача (я надеюсь на это) остается для меня - это настройка производительности. У меня есть несколько предопределенных "const" значений в исходном коде моего агента одного класса, например:

// values used as "const"s
private static  long FT_THRESHOLD               = 400;
private static  long FT_THRESHOLD_MARGIN          = 50;
private static  long FT_SMOOTH_PRICE_IDICATOR   = 20;
private static  long FT_BUY_PRICE_MODIFIER     = 0;
private static  long FT_LAST_ROUNDS_STARTTIME   = 90;
private static  long FT_AMOUNT_ADJUST_MODIFIER    = 5;
private static  long FT_HISTORY_PIRCES_LENGTH   = 10;
private static  long FT_TRACK_DURATION          = 5;
private static  int  MAX_BED_BID_NUM_PER_AUC      = 12;

Я могу определенно изменить значения вручную, а затем скомпилировать код, чтобы дать ему еще один шанс. Но время выполнения тщательного «статистического анализа» обычно требует более 2000 раз выполнения, что обычно длится более получаса на моем ноутбуке ...

Так что я надеюсь, что есть способ изменить значения, используя другие способы, кроме как копаться в исходном коде, чтобы изменить там значения "const", поэтому я могу автоматически распространять скомпилированный код на ПК других людей и позволить им вместо этого запускать статистический анализ ,

Еще одна причина автоматической корректировки значения заключается в том, что я могу попытаться использовать свой собственный агент, чтобы победить себя, выбрав различные «постоянные» значения. Хотя мои значения получены из предыдущей истории и статистических результатов, они далеки от наиболее оптимизированных значений.

Я надеюсь, что есть простой способ, чтобы я мог быстро принять его, чтобы хорошо выспаться сегодня вечером, пока компьютер делает все для меня ...:)

Есть какие-нибудь намеки на такого рода вещи? Любое предложение приветствуется и высоко ценится.

Ответы [ 3 ]

4 голосов
/ 08 апреля 2010

Забудьте о константах, они не то, что вы хотите здесь. Перейдите с файлом Properties , который вы прочитали из файла на диске. Это то, что я бы сделал, если бы мне пришлось сделать это к завтрашнему дню. Вам придется поиграться с classpath, чтобы заставить это работать, и я предполагаю, что вы уже рассмотрели файловый ввод-вывод в Java.

2 голосов
/ 08 апреля 2010

Как и предполагали другие, чтение в файле свойств было бы относительно быстрым и простым способом сделать это.

Если вы пытаетесь запустить программу на разных ее версиях в одной и той же JVM, вашпеременные НЕ МОГУТ быть статичными.

Если вы переопределите это как файлы свойств, вот небольшой справочный материал:

Файл свойств обычно выглядит следующим образом:

#This is a .properties file
FT_THRESHOLD=400
FT_THRESHOLD_MARGIN=50
etc...

Чтение вСвойства из файла довольно просты, просто сделайте из файла fileInputStream и вызовите метод load () класса java.util.Properties.

public void readProperties(File propertiesFile)
{
    Properties props = new Properties();
    props.load(new FileInputStream(propertiesFile));
    FT_THRESHOLD = Long.parseLong(props.getProperty("FT_THRESHOLD"));
    FT_TRACK_DURATION = Long.parseLong(props.getProperty("FT_TRACK_DURATION"));
    ...etc
}

Надеюсь, это поможет!

0 голосов
/ 08 апреля 2010

Можно присвоить возвращаемое значение метода, считывающего файл свойств, статической конечной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...