Вот результаты синхронизации с использованием Python 3.6.0. Имейте в виду, что эти времена относятся друг к другу, а не абсолютны.
Я придерживался только мелких копий, а также добавил некоторые новые методы, которые не были возможны в Python2, например list.copy()
( Python3 эквивалент среза ) и распаковки (*new_list, = list
):
METHOD TIME TAKEN
b = a[:] 6.468942025996512 #Python2 winner
b = a.copy() 6.986593422974693 #Python3 "slice equivalent"
b = []; b.extend(a) 7.309216841997113
b = a[0:len(a)] 10.916740721993847
*b, = a 11.046738261007704
b = list(a) 11.761539687984623
b = [i for i in a] 24.66165203397395
b = copy.copy(a) 30.853400873980718
b = []
for item in a:
b.append(item) 48.19176080400939
Мы видим, что старый победитель по-прежнему выходит сверху, но на самом деле не на огромную сумму, учитывая повышенную читаемость подхода Python3 list.copy()
.
Обратите внимание, что эти методы делают not выводными эквивалентными результатами для любого ввода, отличного от списков. Все они работают для разрезаемых объектов, некоторые работы для любого итерабельного, но только copy.copy()
работает для любого объекта Python.
Вот код тестирования для заинтересованных сторон ( Шаблон отсюда ):
import timeit
COUNT = 50000000
print("Array duplicating. Tests run", COUNT, "times")
setup = 'a = [0,1,2,3,4,5,6,7,8,9]; import copy'
print("b = list(a)\t\t", timeit.timeit(stmt='b = list(a)', setup=setup, number=COUNT))
print("b = copy.copy(a)\t\t", timeit.timeit(stmt='b = copy.copy(a)', setup=setup, number=COUNT))
print("b = a.copy()\t\t", timeit.timeit(stmt='b = a.copy()', setup=setup, number=COUNT))
print("b = a[:]\t\t", timeit.timeit(stmt='b = a[:]', setup=setup, number=COUNT))
print("b = a[0:len(a)]\t", timeit.timeit(stmt='b = a[0:len(a)]', setup=setup, number=COUNT))
print("*b, = a\t", timeit.timeit(stmt='*b, = a', setup=setup, number=COUNT))
print("b = []; b.extend(a)\t", timeit.timeit(stmt='b = []; b.extend(a)', setup=setup, number=COUNT))
print("b = []\nfor item in a: b.append(item)\t", timeit.timeit(stmt='b = []\nfor item in a: b.append(item)', setup=setup, number=COUNT))
print("b = [i for i in a]\t", timeit.timeit(stmt='b = [i for i in a]', setup=setup, number=COUNT))
Благодаря подсказке KasunBG я нашел решение в «предлагаемой» ссылке, обновил следующий файл (замените 7.x на вашу версию Netbeans):
C:\Program Files\NetBeans 7.x\etc\netbeans.conf
Измените следующую строку на точку где ваша установка java:
netbeans_jdkhome="C:\Program Files\Java\jdk1.7xxxxx"
Возможно, вам понадобятся права администратора для редактирования netbeans.conf
Все остальные ответы описывали, как явно указать местоположение платформы Java, что прекрасно, если вы действительно хотите использовать определенную версию java. Однако, если вы просто хотите использовать самую последнюю версию jdk, и у вас есть установленная в «нормальном» месте для вашей операционной системы, лучшим решением является НЕ указывать местоположение jdk. Вместо этого пусть пуск Netbeans запускает jdk каждый раз, когда вы его запускаете.
Для этого не указывайте jdkhome в командной строке и закомментируйте значение строки netbeans_jdkhome в любых файлах netbeans.conf. (См. Другие ответы, где искать эти файлы.)
Если вы сделаете это, при установке новой версии java, ваши netbeans будут автоматически использовать ее. В большинстве случаев это, вероятно, именно то, что вы хотите.
Для тех, кто не использует Windows, файл для изменения - netbeans-8.0/etc/netbeans.conf
, а строка (строки) для изменения:
netbeans_jdkhome="/usr/lib/jvm/java-8-oracle"
комментирует старое значение и вставляет новое значение
У меня тоже было это сообщение, потому что сегодня я решил переместить мой другой jdk в тот же каталог. Я решил удалить весь программный менеджер окна. После этого, конечно, я получил сообщение ниже.
«Не удается найти установку java в указанном jdkhome C: \ Program Files (x86) \ Java \ jdk1.7.0_60 Вы хотите попробовать использовать версию по умолчанию?"
Новая установка jdk не решает проблему. Хорошо, вы можете настроить это в меню «Инструменты»> «Java-платформы», но в моем случае мне пришлось исправить мой netbeans.conf
. У меня была строка ниже
netbeans_jdkhome="C:\Program Files\Java\jdk1.7.0_60"
, и я заменил ее на
netbeans_jdkhome="C:\devtools\Java\jdk1.8.0_25"
Перейдите к Tools
-> Java Platforms
. Там нажмите «Добавить платформу», наведите на C:\Program Files (x86)\Java\jdk1.6.0_25
. Вы можете либо установить другую версию JDK, либо удалить существующие версии.
Другое решение , предложенное на сайте oracle (sun),
netbeans.exe --jdkhome "C:\Program Files\jdk1.6.0_20"
I пробовал это на 6.9.1. Вы также можете изменить JDK на проект. Вам нужно установить доступные JDK через диалог Java Platforms
. Затем перейдите к Run
-> Set Project Configuration
-> Customize
. После этого в открывшемся диалоговом окне перейдите к Build
-> Compile
. Установите версию.
Он точно не отвечает на ваш вопрос, но чтобы обойти проблему,
start netbeans --jdkhome c:\path\to\jdk
Если у вас уже есть проект в NetBeans, и вы хотите изменить компилятор (например, от 1.7 до 1.), вам также потребуется изменить исходный компилятор Java для этого проекта.
Щелкните правой кнопкой мыши проект и выберите свойства, как описано ниже:
Затем проверьте, что проект имеет необходимый источник приведенный ниже:
затем проверьте, что компилятор Java корректен для проекта:
В качестве дополнительного полезного решения для тех из вас, кто находится в Windows 7 и выше, - если вы используете:
C:\Program Files\Java>mklink /D jdk8 jdk1.8.0_25
, вы получаете папку Symbolic Link
, которая может быть отредактирована всякий раз, когда появляется новый JDK.
Все, что вам нужно сделать, это установить
netbeans_jdkhome="C:\Program Files\Java\jdk8"
(в обоих местах для Netbeans 8), и вам больше не придется редактировать конфигурацию. Просто настраивайте символическую ссылку каждый раз, когда обновляется JDK.
В окнах open cmd
перейдите в каталог, в котором загружены ваши netbeans
, затем выполните команду JDK путь может отличаться от указанного мной пути
netbeans -8.2-windows.exe --javahome "C: \ Program Files \ Java \ jdk-9.0.1"
, если вы столкнулись с проблемой в существующей установленной в netbeans, вы можете найти подробности в здесь
netbeans.conf
в разделе~/.netbeans/version/etc
, который переопределяет файл свойств/usr/local...
. (Я предполагаю, что/usr/local/netbeans-7.3/etc
- ваша папка установки дистрибутива - я разрабатываю с установленной вручную версией в настраиваемой папке и не могу быть на 100% уверен.) – Alberto 7 April 2014 в 15:23C:\Users\You\AppData\Roaming\NetBeans\8.0\etc\netbeans.conf
. – OldCurmudgeon 17 July 2014 в 09:47