csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
27 KiB
136 lines
27 KiB
using System;
|
|
using System.Linq;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Harfbuzz;
|
|
using Avalonia.Media;
|
|
using Avalonia.Media.TextFormatting;
|
|
using Avalonia.Skia;
|
|
using Avalonia.UnitTests;
|
|
using BenchmarkDotNet.Attributes;
|
|
|
|
namespace Avalonia.Benchmarks.Text;
|
|
|
|
[MemoryDiagnoser]
|
|
[MinIterationTime(150)]
|
|
[MaxWarmupCount(15)]
|
|
public class HugeTextLayout : IDisposable
|
|
{
|
|
private static readonly Random s_rand = new();
|
|
private static readonly bool s_useSkia = false;
|
|
|
|
private readonly IDisposable _app;
|
|
private readonly string[] _manySmallStrings;
|
|
|
|
private static string RandomString(int length)
|
|
{
|
|
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789&?%$@";
|
|
return new string(Enumerable.Repeat(chars, length).Select(s => s[s_rand.Next(s.Length)]).ToArray());
|
|
}
|
|
|
|
public HugeTextLayout()
|
|
{
|
|
_manySmallStrings = Enumerable.Range(0, 1000).Select(_ => RandomString(s_rand.Next(2, 15))).ToArray();
|
|
|
|
var testServices = TestServices.StyledWindow;
|
|
|
|
if (s_useSkia)
|
|
{
|
|
testServices = testServices.With(
|
|
textShaperImpl: new HarfBuzzTextShaper(),
|
|
fontManagerImpl: new FontManagerImpl());
|
|
}
|
|
|
|
_app = UnitTestApplication.Start(testServices);
|
|
}
|
|
|
|
private const string Text = @"Though, the objectives of the development of the prominent landmarks can be neglected in most cases, it should be realized that after the completion of the strategic decision gives rise to The Expertise of Regular Program (Carlton Cartwright in The Book of the Key Factor)
|
|
A number of key issues arise from the belief that the explicit examination of strategic management should correlate with the conceptual design.
|
|
By all means, the unification of the reliably developed techniques indicates the importance of the ultimate advantage of episodic skill over alternate practices.
|
|
Let's consider, that the portion of the continuing support can be regarded as relentlessly insignificant. The hardware maintenance focuses our attention on the structure absorption. The real reason of the permanent growth drastically the preliminary action plan the ultimate advantage of useful probability over alternate practices.
|
|
Let it not be said that a section of the essential component discards the principle of the more interconnection of critical thinking with productivity boosting of the referential arguments.
|
|
One should, however, not forget that concentration of violations of the strategic management requires urgent actions to be taken towards the comprehensive set of policy statements. Therefore, the concept of the design aspects can be treated as the only solution.
|
|
In a loose sense concentration of the center of the critical thinking provides a deep insight into the emergency planning. The comparison is quite a powerful matter.
|
|
Resulting from review or analysis of threats and opportunities, we can presume that either significant improvement or basics of planning and scheduling reveals the patterns of the final draft. Therefore, the concept of the crucial component can be treated as the only solution.
|
|
One should, nevertheless, consider that the exceptional results of the diverse sources of information gives an overview of the production cycle. It should rather be regarded as an integral part of the direct access to key resources.
|
|
Admitting that the possibility of achieving the results of the constructive criticism, as far as the strategic management is questionable, cannot rely only on the critical thinking. It may reveal how the systems approach partially the comprehensive project management. We must be ready for outline design stage and network development investigation of every contradiction between the effective time management and the efficient decision the network development.
|
|
Everyone understands what it takes to the draft analysis and prior decisions and early design solutions. In any case, we can systematically change the mechanism of the sources and influences of the continuing financing doctrine. This could exceedingly be a result of a task analysis the hardware maintenance. The real reason of the strategic planning seemingly the influence on eventual productivity. Everyone understands what it takes to the well-known practice. Therefore, the concept of the productivity boost can be treated as the only solution the driving factor.
|
|
It may reveal how the matters of peculiar interest slowly the goals and objectives or the diverse sources of information the positive influence of any major outcomes complete failure of the supposed theory.
|
|
In respect that the structure of the sufficient amount poses problems and challenges for both the set of related commands and controls and the ability bias.";
|
|
|
|
[Params(false, true)]
|
|
public bool Wrap { get; set; }
|
|
|
|
[Params(false, true)]
|
|
public bool Trim { get; set; }
|
|
|
|
[Benchmark]
|
|
public TextLayout BuildTextLayout() => MakeLayout(Text);
|
|
|
|
private const string Emojis = @"ð ð ð ð€£ ð ð ð
ð ð ð ð ð ð ð 𥰠ð ð ð âºïž ð ð€ ð€© ð€ ð€š ð ð ð¶ ð ð ð£ ð¥ ð® ð€ ð¯ ðª ð« ðŽ ð ð ð ð ð€€ ð ð ð ð ð ð€ ð² â¹ïž ð ð ð ð ð€ ð¢ ð ðŠ ð§ ðš ð© ð€¯ ð¬ ð° ð± 𥵠𥶠ð³ ð€ª ðµ ð¡ ð ð€¬ ð· ð€ ð€ ð€¢ ð€® ð€§ ð ð€ ð€¡ ð¥³ ð¥Ž ð¥º ð€¥ ð€« ð€ ð§ ð€ ð ð¿ ð¹ ðº ð ð» ðœ ð€ ð© ðº ðž ð¹ ð» ðŒ ðœ ð ð¿ ðŸ
|
|
ð¶ ð§ ð§ ðŠ ð© ð§ ðš ðµ ð§ ðŽ ð² ð³ââïž ð³ââïž ð§ ð§ ð±ââïž ð±ââïž ðšâðŠ° ð©âðŠ° ðšâðŠ± ð©âðŠ± ðšâðŠ² ð©âðŠ² ðšâðŠ³ ð©âðŠ³ ðŠžââïž ðŠžââïž ðйââïž ðйââïž ð®ââïž ð®ââïž ð·ââïž ð·ââïž ðââïž ðââïž ðµïžââïž ðµïžââïž ð©ââïž ðšââïž ð©âðŸ ðšâðŸ ð©âð³ ðšâð³ ð©âð ðšâð ð©âð€ ðšâð€ ð©âð« ðšâð« ð©âð ðšâð ð©âð» ðšâð» ð©âðŒ ðšâðŒ ð©âð§ ðšâð§ ð©âð¬ ðšâð¬ ð©âðš ðšâðš ð©âð ðšâð ð©ââïž ðšââïž ð©âð ðšâð ð©ââïž ðšââïž ð° ð€µ ðž ð€Ž ð€¶ ð
ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ð§ââïž ðŒ ð€° ð€± ðââïž ðââïž ðââïž ðââïž ð
ââïž ð
ââïž ðââïž ðââïž ðââïž ðââïž ð€Šââïž ð€Šââïž ð€·ââïž ð€·ââïž ðââïž ðââïž ðââïž ðââïž ðââïž ðââïž ðââïž ðââïž ð§ââïž ð§ââïž ð
ð€³ ð ðº ð¯ââïž ð¯ââïž ðŽ ð¶ââïž ð¶ââïž ðââïž ðââïž ð« ð ð¬ ð ð©ââ€ïžâð© ðšââ€ïžâðš ð ð©ââ€ïžâðâð© ðšââ€ïžâðâðš ðª ðšâð©âð§ ðšâð©âð§âðŠ ðšâð©âðŠâðŠ ðšâð©âð§âð§ ð©âð©âðŠ ð©âð©âð§ ð©âð©âð§âðŠ ð©âð©âðŠâðŠ ð©âð©âð§âð§ ðšâðšâðŠ ðšâðšâð§ ðšâðšâð§âðŠ ðšâðšâðŠâðŠ ðšâðšâð§âð§ ð©âðŠ ð©âð§ ð©âð§âðŠ ð©âðŠâðŠ ð©âð§âð§ ðšâðŠ ðšâð§ ðšâð§âðŠ ðšâðŠâðŠ ðšâð§âð§ ð€² ð ð ð ð€ ð ð ð â ð€ ð€ ð€ âïž ð€ ð€ ð ð ð ð ð âïž â ð€ ð ð ð ð€ ðª ðŠµ ðŠ¶ ð âïž ð ð ð ð ð ð
ð ð ð£ ð ð ð§ ðŠŽ ðŠ· ð£ ð€ ð¥
|
|
ð§¥ ð ð ð ð ð ð ð ð ð¡ ð¢ ð ð 𥟠𥿠𧊠𧀠𧣠ð© ð§¢ ð ð â ð ð ð ð ðŒ ð ð ð¶ 𥜠𥌠ð ð§µ ð§¶
|
|
ð¶ð» ðŠð» ð§ð» ðšð» ð©ð» ð±ð»ââïž ð±ð» ðŽð» ðµð» ð²ð» ð³ð»ââïž ð³ð» ð®ð»ââïž ð®ð» ð·ð»ââïž ð·ð» ðð»ââïž ðð» ðµð»ââïž ðµð» ð©ð»ââïž ðšð»ââïž ð©ð»âðŸ ðšð»âðŸ ð©ð»âð³ ðšð»âð³ ð©ð»âð ðšð»âð ð©ð»âð€ ðšð»âð€ ð©ð»âð« ðšð»âð« ð©ð»âð ðšð»âð ð©ð»âð» ðšð»âð» ð©ð»âðŒ ðšð»âðŒ ð©ð»âð§ ðšð»âð§ ð©ð»âð¬ ðšð»âð¬ ð©ð»âðš ðšð»âðš ð©ð»âð ðšð»âð ð©ð»ââïž ðšð»ââïž ð©ð»âð ðšð»âð ð©ð»ââïž ðšð»ââïž ð€¶ð» ð
ð» ðžð» ð€Žð» ð°ð» ð€µð» ðŒð» ð€°ð» ðð»ââïž ðð» ðð» ðð»ââïž ð
ð» ð
ð»ââïž ðð» ðð»ââïž ðð» ðð»ââïž ð€Šð»ââïž ð€Šð»ââïž ð€·ð»ââïž ð€·ð»ââïž ðð» ðð»ââïž ðð» ðð»ââïž ðð» ðð»ââïž ðð» ðð»ââïž ðŽð» ðð» ðºð» ð¶ð»ââïž ð¶ð» ðð»ââïž ðð» ð€²ð» ðð» ðð» ðð» ðð» ðð» ðð» ðð» âð» ð€ð» ð€ð» ð€ð» âð» ð€ð» ð€ð» ðð» ðð» ðð» ðð» ðð» âð» âð» ð€ð» ðð» ðð» ðð» ð€ð» ðªð» ðð» âð» ð€³ð» ð
ð» ðð» ðð»
|
|
ð¶ðŒ ðŠðŒ ð§ðŒ ðšðŒ ð©ðŒ ð±ðŒââïž ð±ðŒ ðŽðŒ ðµðŒ ð²ðŒ ð³ðŒââïž ð³ðŒ ð®ðŒââïž ð®ðŒ ð·ðŒââïž ð·ðŒ ððŒââïž ððŒ ðµðŒââïž ðµðŒ ð©ðŒââïž ðšðŒââïž ð©ðŒâðŸ ðšðŒâðŸ ð©ðŒâð³ ðšðŒâð³ ð©ðŒâð ðšðŒâð ð©ðŒâð€ ðšðŒâð€ ð©ðŒâð« ðšðŒâð« ð©ðŒâð ðšðŒâð ð©ðŒâð» ðšðŒâð» ð©ðŒâðŒ ðšðŒâðŒ ð©ðŒâð§ ðšðŒâð§ ð©ðŒâð¬ ðšðŒâð¬ ð©ðŒâðš ðšðŒâðš ð©ðŒâð ðšðŒâð ð©ðŒââïž ðšðŒââïž ð©ðŒâð ðšðŒâð ð©ðŒââïž ðšðŒââïž ð€¶ðŒ ð
ðŒ ðžðŒ ð€ŽðŒ ð°ðŒ ð€µðŒ ðŒðŒ ð€°ðŒ ððŒââïž ððŒ ððŒ ððŒââïž ð
ðŒ ð
ðŒââïž ððŒ ððŒââïž ððŒ ððŒââïž ð€ŠðŒââïž ð€ŠðŒââïž ð€·ðŒââïž ð€·ðŒââïž ððŒ ððŒââïž ððŒ ððŒââïž ððŒ ððŒââïž ððŒ ððŒââïž ðŽðŒ ððŒ ðºðŒ ð¶ðŒââïž ð¶ðŒ ððŒââïž ððŒ ð€²ðŒ ððŒ ððŒ ððŒ ððŒ ððŒ ððŒ ððŒ âðŒ ð€ðŒ ð€ðŒ ð€ðŒ âðŒ ð€ðŒ ð€ðŒ ððŒ ððŒ ððŒ ððŒ ððŒ âðŒ âðŒ ð€ðŒ ððŒ ððŒ ððŒ ð€ðŒ ðªðŒ ððŒ âðŒ ð€³ðŒ ð
ðŒ ððŒ ððŒ
|
|
ð¶ðœ ðŠðœ ð§ðœ ðšðœ ð©ðœ ð±ðœââïž ð±ðœ ðŽðœ ðµðœ ð²ðœ ð³ðœââïž ð³ðœ ð®ðœââïž ð®ðœ ð·ðœââïž ð·ðœ ððœââïž ððœ ðµðœââïž ðµðœ ð©ðœââïž ðšðœââïž ð©ðœâðŸ ðšðœâðŸ ð©ðœâð³ ðšðœâð³ ð©ðœâð ðšðœâð ð©ðœâð€ ðšðœâð€ ð©ðœâð« ðšðœâð« ð©ðœâð ðšðœâð ð©ðœâð» ðšðœâð» ð©ðœâðŒ ðšðœâðŒ ð©ðœâð§ ðšðœâð§ ð©ðœâð¬ ðšðœâð¬ ð©ðœâðš ðšðœâðš ð©ðœâð ðšðœâð ð©ðœââïž ðšðœââïž ð©ðœâð ðšðœâð ð©ðœââïž ðšðœââïž ð€¶ðœ ð
ðœ ðžðœ ð€Žðœ ð°ðœ ð€µðœ ðŒðœ ð€°ðœ ððœââïž ððœ ððœ ððœââïž ð
ðœ ð
ðœââïž ððœ ððœââïž ððœ ððœââïž ð€Šðœââïž ð€Šðœââïž ð€·ðœââïž ð€·ðœââïž ððœ ððœââïž ððœ ððœââïž ððœ ððœââïž ððœ ððœââïž ðŽðŒ ððœ ðºðœ ð¶ðœââïž ð¶ðœ ððœââïž ððœ ð€²ðœ ððœ ððœ ððœ ððœ ððœ ððœ ððœ âðœ ð€ðœ ð€ðœ ð€ðœ âðœ ð€ðœ ð€ðœ ððœ ððœ ððœ ððœ ððœ âðœ âðœ ð€ðœ ððœ ððœ ððœ ð€ðœ ðªðœ ððœ âðœ ð€³ðœ ð
ðœ ððœ ððœ
|
|
ð¶ðŸ ðŠðŸ ð§ðŸ ðšðŸ ð©ðŸ ð±ðŸââïž ð±ðŸ ðŽðŸ ðµðŸ ð²ðŸ ð³ðŸââïž ð³ðŸ ð®ðŸââïž ð®ðŸ ð·ðŸââïž ð·ðŸ ððŸââïž ððŸ ðµðŸââïž ðµðŸ ð©ðŸââïž ðšðŸââïž ð©ðŸâðŸ ðšðŸâðŸ ð©ðŸâð³ ðšðŸâð³ ð©ðŸâð ðšðŸâð ð©ðŸâð€ ðšðŸâð€ ð©ðŸâð« ðšðŸâð« ð©ðŸâð ðšðŸâð ð©ðŸâð» ðšðŸâð» ð©ðŸâðŒ ðšðŸâðŒ ð©ðŸâð§ ðšðŸâð§ ð©ðŸâð¬ ðšðŸâð¬ ð©ðŸâðš ðšðŸâðš ð©ðŸâð ðšðŸâð ð©ðŸââïž ðšðŸââïž ð©ðŸâð ðšðŸâð ð©ðŸââïž ðšðŸââïž ð€¶ðŸ ð
ðŸ ðžðŸ ð€ŽðŸ ð°ðŸ ð€µðŸ ðŒðŸ ð€°ðŸ ððŸââïž ððŸ ððŸ ððŸââïž ð
ðŸ ð
ðŸââïž ððŸ ððŸââïž ððŸ ððŸââïž ð€ŠðŸââïž ð€ŠðŸââïž ð€·ðŸââïž ð€·ðŸââïž ððŸ ððŸââïž ððŸ ððŸââïž ððŸ ððŸââïž ððŸ ððŸââïž ðŽðŸ ððŸ ðºðŸ ð¶ðŸââïž ð¶ðŸ ððŸââïž ððŸ ð€²ðŸ ððŸ ððŸ ððŸ ððŸ ððŸ ððŸ ððŸ âðŸ ð€ðŸ ð€ðŸ ð€ðŸ âðŸ ð€ðŸ ð€ðŸ ððŸ ððŸ ððŸ ððŸ ððŸ âðŸ âðŸ ð€ðŸ ððŸ ððŸ ððŸ ð€ðŸ ðªðŸ ððŸ âðŸ ð€³ðŸ ð
ðŸ ððŸ ððŸ
|
|
ð¶ð¿ ðŠð¿ ð§ð¿ ðšð¿ ð©ð¿ ð±ð¿ââïž ð±ð¿ ðŽð¿ ðµð¿ ð²ð¿ ð³ð¿ââïž ð³ð¿ ð®ð¿ââïž ð®ð¿ ð·ð¿ââïž ð·ð¿ ðð¿ââïž ðð¿ ðµð¿ââïž ðµð¿ ð©ð¿ââïž ðšð¿ââïž ð©ð¿âðŸ ðšð¿âðŸ ð©ð¿âð³ ðšð¿âð³ ð©ð¿âð ðšð¿âð ð©ð¿âð€ ðšð¿âð€ ð©ð¿âð« ðšð¿âð« ð©ð¿âð ðšð¿âð ð©ð¿âð» ðšð¿âð» ð©ð¿âðŒ ðšð¿âðŒ ð©ð¿âð§ ðšð¿âð§ ð©ð¿âð¬ ðšð¿âð¬ ð©ð¿âðš ðšð¿âðš ð©ð¿âð ðšð¿âð ð©ð¿ââïž ðšð¿ââïž ð©ð¿âð ðšð¿âð ð©ð¿ââïž ðšð¿ââïž ð€¶ð¿ ð
ð¿ ðžð¿ ð€Žð¿ ð°ð¿ ð€µð¿ ðŒð¿ ð€°ð¿ ðð¿ââïž ðð¿ ðð¿ ðð¿ââïž ð
ð¿ ð
ð¿ââïž ðð¿ ðð¿ââïž ðð¿ ðð¿ââïž ð€Šð¿ââïž ð€Šð¿ââïž ð€·ð¿ââïž ð€·ð¿ââïž ðð¿ ðð¿ââïž ðð¿ ðð¿ââïž ðð¿ ðð¿ââïž ðð¿ ðð¿ââïž ðŽð¿ ðð¿ ðºð¿ ð¶ð¿ââïž ð¶ð¿ ðð¿ââïž ðð¿ ð€²ð¿ ðð¿ ðð¿ ðð¿ ðð¿ ðð¿ ðð¿ ðð¿ âð¿ ð€ð¿ ð€ð¿ ð€ð¿ âð¿ ð€ð¿ ð€ð¿ ðð¿ ðð¿ ðð¿ ðð¿ ðð¿ âð¿ âð¿ ð€ð¿ ðð¿ ðð¿ ðð¿ ð€ð¿ ðªð¿ ðð¿ âð¿ ð€³ð¿ ð
ð¿ ðð¿ ðð¿
|
|
ð¶ ð± ð ð¹ ð° ðŠ ðŠ ð» ðŒ ðŠ ðŠ¡ ðš ð¯ ðŠ ð® ð· ðœ ðž ðµ ð ð ð ð ð ð§ ðŠ ð€ ð£ ð¥ ðŠ ðŠ¢ ðŠ
ðŠ ðŠ ðŠ ðŠ ðº ð ðŽ ðŠ ð ð ðŠ ð ð ð ð ðŠ ð· ðž ðŠ ðŠ ðŠ ð¢ ð ðŠ ðŠ ðŠ ð ðŠ ðŠ ðŠ ð¡ ð ð ð¬ ð³ ð ðŠ ð ð
ð ðŠ ðŠ ð ðŠ ðŠ ðª ð« ðŠ ðŠ ð ð ð ð ð ð ð ð ðŠ ð ð© ð ð ðŠ ð ð ð ð ð¿ ðŠ ðŸ ð ð² ðµ ð ð² ð³ ðŽ ð± ð¿ âïž ð ð ð ð ð ð ð ðŸ ð ð· ð¹ ð¥ ðº ðž ðŒ ð» ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð« âïž ð âš â¡ïž âïž ð¥ ð¥ ðª ð âïž ð€ â
ïž ð¥ âïž ðŠ ð§ â ð© ðš âïž âïž âïž ð¬ ðš ð§ ðŠ âïž âïž ð ð«
|
|
ð ð ð ð ð ð ð ð ð ð ð ð ð ð¥ 𥥠ð¥ ð
ð ð¥ 𥊠ð¥ 𥬠ð¶ ðœ ð¥ ð¥ ð ð¥ ð ð¥ 𥚠𥯠ð§ ð¥ ð³ ð¥ ð¥ 𥩠ð ð ð ð ð ð 𥪠ð¥ ð® ð¯ ð¥ ð¥ 𥫠ð ð ð² ð ð£ ð± ð¥ ð€ ð ð ð ð¥ 𥮠ð¥ ð¢ ð¡ ð§ ðš ðŠ ð¥§ ð° ð ð® ð ð¬ ð« ð¿ ð§ ð© ðª ð° ð¥ ð¯ ð¥ ðŒ âïž ðµ 𥀠ð¶ ðº ð» ð¥ ð· ð¥ ðž ð¹ ðŸ ð¥ ðŽ ðœ 𥣠𥡠ð¥¢
|
|
âœïž ð ð âŸïž ð¥ ð ð ðŸ ð¥ ð± ð ðž ð¥
ð ð ð¥ ð â³ïž ð¹ ð£ ð¥ ð¥ ðœ âž ð¥ ð· ð¹ ð¿ â· ð ðïžââïž ðð»ââïž ððŒââïž ððœââïž ððŸââïž ðð¿ââïž ðïžââïž ðð»ââïž ððŒââïž ððœââïž ððŸââïž ðð¿ââïž ð€Œââïž ð€Œââïž ð€žââïž ð€žð»ââïž ð€žðŒââïž ð€žðœââïž ð€žðŸââïž ð€žð¿ââïž ð€žââïž ð€žð»ââïž ð€žðŒââïž ð€žðœââïž ð€žðŸââïž ð€žð¿ââïž â¹ïžââïž â¹ð»ââïž â¹ðŒââïž â¹ðœââïž â¹ðŸââïž â¹ð¿ââïž â¹ïžââïž â¹ð»ââïž â¹ðŒââïž â¹ðœââïž â¹ðŸââïž â¹ð¿ââïž ð€º ð€Ÿââïž ð€Ÿð»ââïž ð€ŸðŒââïž ð€ŸðŸââïž ð€ŸðŸââïž ð€Ÿð¿ââïž ð€Ÿââïž ð€Ÿð»ââïž ð€ŸðŒââïž ð€Ÿðœââïž ð€ŸðŸââïž ð€Ÿð¿ââïž ðïžââïž ðð»ââïž ððŒââïž ððœââïž ððŸââïž ðð¿ââïž ðïžââïž ðð»ââïž ððŒââïž ððœââïž ððŸââïž ðð¿ââïž ð ðð» ððŒ ððœ ððŸ ðð¿ ð§ââïž ð§ð»ââïž ð§ðŒââïž ð§ðœââïž ð§ðŸââïž ð§ð¿ââïž ð§ââïž ð§ð»ââïž ð§ðŒââïž ð§ðœââïž ð§ðŸââïž ð§ð¿ââïž ðââïž ðð»ââïž ððŒââïž ððœââïž ððŸââïž ðð¿ââïž ðââïž ðð»ââïž ððŒââïž ððœââïž ððŸââïž ðð¿ââïž ðââïž ðð»ââïž ððŒââïž ððœââïž ððŸââïž ðð¿ââïž ðââïž ðð»ââïž ððŒââïž ððœââïž ððŸââïž ðð¿ââïž ð€œââïž ð€œð»ââïž ð€œðŒââïž ð€œðœââïž ð€œðŸââïž ð€œð¿ââïž ð€œââïž ð€œð»ââïž ð€œðŒââïž ð€œðœââïž ð€œðŸââïž ð€œð¿ââïž ð£ââïž ð£ð»ââïž ð£ðŒââïž ð£ðœââïž ð£ðŸââïž ð£ð¿ââïž ð£ââïž ð£ð»ââïž ð£ðŒââïž ð£ðœââïž ð£ðŸââïž ð£ð¿ââïž ð§ââïž ð§ð»ââïž ð§ðŒââïž ð§ðœââïž ð§ðŸââïž ð§ð¿ââïž ð§ââïž ð§ð»ââïž ð§ðŒââïž ð§ðœââïž ð§ðŸââïž ð§ð¿ââïž ðµââïž ðµð»ââïž ðµðŒââïž ðµðœââïž ðµðŸââïž ðµð¿ââïž ðµââïž ðµð»ââïž ðµðŒââïž ðµðœââïž ðµðŸââïž ðµð¿ââïž ðŽââïž ðŽð»ââïž ðŽðŒââïž ðŽðœââïž ðŽðŸââïž ðŽð¿ââïž ðŽââïž ðŽð»ââïž ðŽðŒââïž ðŽðœââïž ðŽðŸââïž ðŽð¿ââïž ð ð¥ ð¥ ð¥ ð
ð ðµ ð ð« ð ðª ð€¹ââïž ð€¹ð»ââïž ð€¹ðŒââïž ð€¹ðœââïž ð€¹ðŸââïž ð€¹ð¿ââïž ð€¹ââïž ð€¹ð»ââïž ð€¹ðŒââïž ð€¹ðœââïž ð€¹ðŸââïž ð€¹ð¿ââïž ð ðš ð¬ ð€ ð§ ðŒ ð¹ ð¥ ð· ðº ðž ð» ð² ð§© â ð¯ ð³ ð® ð°
|
|
ð ð ð ð ð ð ð ð ð ð ð ð ð ðŽ ð² ðµ ð ðš ð ð ð ð ð¡ ð ð ð ð ð ð ð ð
ð ð ð ð ð ð âïž ð« ð¬ ð© ðº ð° ð ðž ð ð¶ âµïž ð€ ð¥ ð³ ⎠ð¢ âïž âœïž ð§ ðŠ ð¥ ð ðº ð¿ ðœ ðŒ ð° ð¯ ð ð¡ ð¢ ð â²ïž â± ð ð ð ð â° ð ð» ð âºïž ð ð¡ ð ð ð ð ð¢ ð¬ ð£ ð€ ð¥ ðŠ ðš ðª ð« ð© ð ð âªïž ð ð ð â© ð€ ð£ ðŸ ð ð ð
ð ð ð ð ð ð ð ð ð ð ð
|
|
âïž ð± ð² ð» âšïž ð¥ ðš ð± ð² ð¹ ð ðœ ðŸ ð¿ ð ðŒ ð· ðž ð¹ ð¥ ðœ ð ð âïž ð ð ðº ð» ð ð ð â± â² â° ð° âïž â³ ð¡ ð ð ð¡ ðŠ ð¯ ð ð¢ ðž ðµ ðŽ ð¶ ð· ð° ð³ ð§Ÿ ð âïž ð§ ðš â ð â ð© âïž â ð« ð£ ðª ð¡ âïž ð¡ ð¬ â°ïž â±ïž ðº ð§ ð§± ð® ð§¿ ð§ž ð¿ ð âïž ð 𧰠𧲠𧪠𧫠𧬠𧯠ð¬ ð³ ð ð ð¡ ðœ ð° ð¿ ð ð ðð» ððŒ ððœ ððŸ ðð¿ 𧎠𧵠𧶠𧷠𧹠𧺠𧻠𧌠𧜠ð ð ð ðª ð ð ð ðŒ ð ð§³ ð ð ð ð ð ð ð ð§š ð ð® ð ð§§ âïž ð© ðš ð§ ð ð¥ ð€ ðŠ ð· ðª ð« ð¬ ð ð® ð¯ ð ð ð ð ð ð ð ð ð ð ð
ð ð ð³ ð ð ð ð ð ð ð° ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð âïž ð ð âïž ð ð ð âïž ð ð ð ð ð ð
|
|
â€ïž ð§¡ ð ð ð ð ð€ ð â£ïž ð ð ð ð ð ð ð ð â®ïž âïž âªïž ð âžïž â¡ïž ð¯ ð â¯ïž âŠïž ð â âïž âïž âïž âïž âïž âïž âïž âïž âïž âïž âïž âïž ð âïž ð â¢ïž â£ïž ðŽ ð³ ð¶ ðïž ðž ðº ð·ïž âŽïž ð ð® ð ãïž ãïž ðŽ ðµ ð¹ ð² ð
°ïž ð
±ïž ð ð ð
Ÿïž ð â âïž ð âïž ð ð« ð¯ ð¢ âšïž ð· ð¯ ð³ ð± ð ðµ ð âïž â â â âŒïž âïž ð
ð ãœïž â ïž ðž ð± âïž ð° â»ïž â
ð¯ïž ð¹ âïž â³ïž â ð ð âïž ð ð€ ð§ ðŸ â¿ïž ð
¿ïž ð³ ðïž ð ð ð ð
ð¹ ðº ðŒ ð» ð® ðŠ ð¶ ð ð£ â¹ïž ð€ ð¡ ð ð ð ð ð ð ð 0ïžâ£ 1ïžâ£ 2ïžâ£ 3ïžâ£ 4ïžâ£ 5ïžâ£ 6ïžâ£ 7ïžâ£ 8ïžâ£ 9ïžâ£ ð ð¢ #ïžâ£ *ïžâ£ âïž â¶ïž ➠⯠⹠⺠â ⮠⩠⪠⫠⬠âïž ðŒ ðœ â¡ïž â¬
ïž â¬ïž â¬ïž âïž âïž âïž âïž âïž âïž âªïž â©ïž â€Žïž â€µïž ð ð ð ð ð ðµ ð¶ â â â âïž âŸ ð² ð± â¢ïž Â©ïž Â®ïž ã°ïž â° â¿ ð ð ð ð ð âïž âïž ð âªïž â«ïž ðŽ ðµ ðº ð» ðž ð¹ ð¶ ð· ð³ ð² âªïž â«ïž âŸïž âœïž âŒïž â»ïž â¬ïž â¬ïž ð ð ð ð ð ð ð£ ð¢ ðâðš ð¬ ð ð¯ â ïž â£ïž â¥ïž âŠïž ð ðŽ ðïž ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð¡ ð¢ ð£ ð€ ð¥ ðŠ ð§
|
|
ð³ïž ðŽ ð ð© ð³ïžâð ðŽââ ïž ðŠð« ðŠðœ ðŠð± ð©ð¿ ðŠðž ðŠð© ðŠðŽ ðŠð® ðŠð¶ ðŠð¬ ðŠð· ðŠð² ðŠðŒ ðŠðº ðŠð¹ ðŠð¿ ð§ðž ð§ð ð§ð© ð§ð§ ð§ðŸ ð§ðª ð§ð¿ ð§ð¯ ð§ð² ð§ð¹ ð§ðŽ ð§ðŠ ð§ðŒ ð§ð· ð®ðŽ ð»ð¬ ð§ð³ ð§ð¬ ð§ð« ð§ð® ð°ð ðšð² ðšðŠ ð®ðš ðšð» ð§ð¶ ð°ðŸ ðšð« ð¹ð© ðšð± ðšð³ ðšðœ ðšðš ðšðŽ ð°ð² ðšð¬ ðšð© ðšð° ðšð· ðšð® ðð· ðšðº ðšðŒ ðšðŸ ðšð¿ ð©ð° ð©ð¯ ð©ð² ð©ðŽ ðªðš ðªð¬ ðžð» ð¬ð¶ ðªð· ðªðª ðªð¹ ðªðº ð«ð° ð«ðŽ ð«ð¯ ð«ð® ð«ð· ð¬ð« ðµð« ð¹ð« ð¬ðŠ ð¬ð² ð¬ðª ð©ðª ð¬ð ð¬ð® ð¬ð· ð¬ð± ð¬ð© ð¬ðµ ð¬ðº ð¬ð¹ ð¬ð¬ ð¬ð³ ð¬ðŒ ð¬ðŸ ðð¹ ðð³ ðð° ððº ð®ðž ð®ð³ ð®ð© ð®ð· ð®ð¶ ð®ðª ð®ð² ð®ð± ð®ð¹ ð¯ð² ð¯ðµ ð ð¯ðª ð¯ðŽ ð°ð¿ ð°ðª ð°ð® ðœð° ð°ðŒ ð°ð¬ ð±ðŠ ð±ð» ð±ð§ ð±ðž ð±ð· ð±ðŸ ð±ð® ð±ð¹ ð±ðº ð²ðŽ ð²ð° ð²ð¬ ð²ðŒ ð²ðŸ ð²ð» ð²ð± ð²ð¹ ð²ð ð²ð¶ ð²ð· ð²ðº ðŸð¹ ð²ðœ ð«ð² ð²ð© ð²ðš ð²ð³ ð²ðª ð²ðž ð²ðŠ ð²ð¿ ð²ð² ð³ðŠ ð³ð· ð³ðµ ð³ð± ð³ðš ð³ð¿ ð³ð® ð³ðª ð³ð¬ ð³ðº ð³ð« ð°ðµ ð²ðµ ð³ðŽ ðŽð² ðµð° ðµðŒ ðµðž ðµðŠ ðµð¬ ðµðŸ ðµðª ðµð ðµð³ ðµð± ðµð¹ ðµð· ð¶ðŠ ð·ðª ð·ðŽ ð·ðº ð·ðŒ ðŒðž ðžð² ðžðŠ ðžð³ ð·ðž ðžðš ðžð± ðžð¬ ðžðœ ðžð° ðžð® ð¬ðž ðžð§ ðžðŽ ð¿ðŠ ð°ð· ðžðž ðªðž ð±ð° ð§ð± ðžð ð°ð³ ð±ðš ðµð² ð»ðš ðžð© ðžð· ðžð¿ ðžðª ðšð ðžðŸ ð¹ðŒ ð¹ð¯ ð¹ð¿ ð¹ð ð¹ð± ð¹ð¬ ð¹ð° ð¹ðŽ ð¹ð¹ ð¹ð³ ð¹ð· ð¹ð² ð¹ðš ð¹ð» ð»ð® ðºð¬ ðºðŠ ðŠðª ð¬ð§ ðŽó §ó ¢ó ¥ó ®ó §ó ¿ ðŽó §ó ¢ó ³ó £ó Žó ¿ ðŽó §ó ¢ó ·ó ¬ó ³ó ¿ ðºð³ ðºðž ðºðŸ ðºð¿ ð»ðº ð»ðŠ ð»ðª ð»ð³ ðŒð« ðªð ðŸðª ð¿ð² ð¿ðŒ
|
|
𥱠ð€ ðŠŸ ðŠ¿ ðŠ» ð§ ð§ââïž ð§ââïž ð§ ð§ââïž ð§ââïž ð§ ð§ââïž ð§ââïž ðšâðŠ¯ ð©âðŠ¯ ðšâðŠŒ ð©âðŠŒ ðšâðŠœ ð©âðŠœ ðŠ§ ðŠ® ðâðŠº ðŠ¥ ðŠŠ ðŠš ðŠ© ð§ ð§
ð§ ð§ ð§ ðŠª ð§ ð§ ð§ ð ðŠœ ðŠŒ ðº ðª ðª ð€¿ ðª ðª ðŠº ð¥» ð©± ð©² ð©³ ð©° ðª ðª ðª ðŠ¯ ð©ž ð©¹ ð©º ðª ðª ð€ ð€ ð ð¡ ð¢ ð£ ð€ ð¥ ð§ ðš ð© ðŠ ðª ð«";
|
|
|
|
[Benchmark]
|
|
public TextLayout BuildEmojisTextLayout() => MakeLayout(Emojis);
|
|
|
|
[Benchmark]
|
|
public TextLayout[] BuildManySmallTexts()
|
|
{
|
|
var results = new TextLayout[_manySmallStrings.Length];
|
|
|
|
for (var i = 0; i < _manySmallStrings.Length; i++)
|
|
{
|
|
results[i] = MakeLayout(_manySmallStrings[i]);
|
|
}
|
|
|
|
return results;
|
|
}
|
|
|
|
[Benchmark]
|
|
public void VirtualizeTextBlocks()
|
|
{
|
|
var blocks = new TextBlock[10];
|
|
for (var i = 0; i < blocks.Length; i++)
|
|
{
|
|
blocks[i] = new TextBlock
|
|
{
|
|
Width = 120,
|
|
Height = 32,
|
|
};
|
|
}
|
|
|
|
for (int i = 0, j = 0; i < _manySmallStrings.Length; i++, j = j < blocks.Length - 1 ? j + 1 : 0)
|
|
{
|
|
blocks[j].Text = _manySmallStrings[i];
|
|
blocks[j].Measure(new Size(200, 200));
|
|
}
|
|
}
|
|
|
|
private TextLayout MakeLayout(string str)
|
|
{
|
|
var wrapping = Wrap ? TextWrapping.WrapWithOverflow : TextWrapping.NoWrap;
|
|
var trimming = Trim ? TextTrimming.CharacterEllipsis : TextTrimming.None;
|
|
var layout = new TextLayout(str, Typeface.Default, 12d, Brushes.Black, maxWidth: 120,
|
|
textTrimming: trimming, textWrapping: wrapping);
|
|
layout.Dispose();
|
|
return layout;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_app?.Dispose();
|
|
}
|
|
}
|
|
|