Здравствуйте, Serginio1, Вы писали:
V>>Медленные, согласно твоей ссылки — в 6 раз медленее.
V>>Но это потому что руки у ребят по ссылке кривые, они не в состоянии вычесть общие для всех расходы из тестов.
V>>Там разница примерно в 17 раз.
V>>http://www.rsdn.org/forum/flame.comp/8081536.1
S> Ну вызов дольше на 16 наносекунд. Сам метод занимает 1 миллисекунду. Затраты на вызов в данном случае минимальны.
У меня в тестах выше безусловный единичный вызов занимает примерно 0.35 наносекунд.
Собсно, в современных процах команды jump/call при отсутствии сброса конвейера бесплатные — автомат проца самостоятельно заранее "изменяет" IP-регистр, делая предвыборку кода.
Сам нейтивный метод тоже занимает несколько наносекунд.
Например, наполнение буфера команд графического драйвера какого-нить Vulkan.
Т.е., там суть работы такая — итерируемся (включая рекурсивно) по сцене, закидываем команды её построения в буфер команд.
Потом отправляем этот буфер (сразу, или частями, для повышения оперативности) драйверу.
На один кадр могут быть миллионы вызовов, в нейтиве это быстро — на миллион вызовов будет что-то 350 микросекунд расходов, а в твойм случае 16 миллисекунд только стоимость самих вызовов, это 60 FPS ограничение сверху еще безо-всякой полезной работы, в нейтиве ограничение на той же сцене будет под 3 тыс FPS.
V>>Просто открой студию 2019 прямо сейчас, просто создай проект "Xamarin class library", просто посмотри зависимости.
S> Нет там Android ест .NetStandard или .Net Core
Открой Visual Studio Installer и установи тулчейн под Андроид.
Вот какой пустой проект генерится:
| | Cut |
| | <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{9370457D-8C80-49F3-B3AB-55BAFCEB9343}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TemplateGuid>{9ef11e43-1701-4396-8835-8392d57abb70}</TemplateGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ClassLibrary3</RootNamespace>
<AssemblyName>ClassLibrary3</AssemblyName>
<FileAlignment>512</FileAlignment>
<Deterministic>True</Deterministic>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v11.0</TargetFrameworkVersion>
<AndroidUseAapt2>true</AndroidUseAapt2>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>portable</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>portable</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Mono.Android" />
<Reference Include="mscorlib" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="Resources\Resource.designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\AboutResources.txt" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.2.0.5" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup>
<Folder Include="Resources\drawable\" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
|
| | |
V>>Еще ни разу у меня не получалось гладко привести некий код из .Net Core стандарта в .Net Standart.
V>>Твои представления о совместимости стандартов не отвечают объективной реальности.
S> А вот подключил к проекту с
S>S><TargetFrameworkVersion>v11.0</TargetFrameworkVersion>
S>
S>Установил пакет https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/5.0.9 https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/5.0.9
S>у нег в Dependencies 2.1 Ты сам попробуй. И признай ошибку!
Почему я должен что-то признавать, если наш продукт, например, поставляемый в виде либы, на Андроиде заведомо не заведётся?
Пока что только винды, линуха и макось.
С Андроидом пока некоторая борьба.
И да, неужели ты всерьёз решил утверждать, что все библиотеки, писанные на дотнете (пусть даже Core) подходят подо все платформы?
Даже которые специализированные для конкретной платформы?
Зачем же тогда нужен Xamarin, если тогда можно было бы пользовать WPF? ))
S>>> Угу. На Java и C# пишут наверное поболее библиоетек и главное используют их!
V>>Это ты сейчас серьёзно?
S>Конечно. Посмотри сколько библиотек на Java и шарпе
Из них чуть ли не половина — вспомогательных для этих сред, в основном для целей разработки.
А целевых прикладных — тут до нейтива как до Европы раком еще.
Например, Windows.Forms — относительно тонкая обертка над WinAPI User32/GDI и плюсовой либой GDI+.
GTK# — тоже.
Любые GPU-хелперы — тем более, просто генерят код "шейдеров" и отправляют в нейтив.
И т.д. до бесконечности.
Т.е., завернуть, приготовить, упаковать и отправить в некую "черную дыру" (по вашим представлениям), где всё полезное и происходит, собсно.