в методе onCreate добавьте setHasOptionMenu ()
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
Затем переопределите ваш в onCreateOptionsMenu
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add("Menu item")
.setIcon(android.R.drawable.ic_delete)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
Во-первых: в Java вы используете кодировку платформы по умолчанию. Это вполне может быть фиксированная кодировка «один байт на символ», которая явно будет проще, чем использование UTF-8, которое .NET делает по умолчанию.
Кроме того, вы пишете два ] символы новой строки в .NET и только один в Java.
Одна вещь, которую нужно проверить, - это привязка к процессору или оператору ввода-вывода. Я ожидал , что это будет связано с вводом-выводом, но я определенно был удивлен раньше.
Наконец, вы должны запускать каждый тест после перезагрузки, чтобы попытаться удалить дисковые кеши из уравнения, как насколько это возможно.
Я не вижу здесь проблем с кодом. Некоторые возможности: возможно, вы запускали код C # в режиме отладки? Возникла проблема с кешированием файлов. Файл данных C # работал с сильно фрагментированной областью диска. Я бы не ожидал половинной скорости от такой простой программы на C #.
Edit: Я пробовал обе версии на 10439-байтовом blah.txt. Сгенерированный файл имел длину 1 043 900 байт.
Время C # (CTRL + F5) составляло 18 секунд
Время C # (F5) составляло 22 секунды
Время Java составляло 17 секунд.
Оба приложения потребляли около 40% процессорного времени, половина из которых приходилась на время ядра.
Edit2: Ограничение ЦП связано с тем, что код постоянно открывается, закрывается и записывает небольшие фрагменты данных. Это вызывает множество переходов между управляемым и собственным режимом ядра и режимом пользовательского ядра.
Спецификация моей системы: Core 2 Duo 2,4 ГГц, 2 ГБ ОЗУ 800 МГц, WinXP SP3
Медленная часть тестов выглядит так, как если бы это была ситуация, когда один файл многократно открывается, оформляется, выполняется небольшая запись и снова закрывается. Не полезный тест. Очевидные различия заключаются в том, насколько велики буферы (при однократной записи они фактически не нужны) и синхронизируется ли полученный файл с диском.