latest posts

After spending the weekend publishing jcBENCH to both the Windows Store and Windows Phone I figured I would post some notes/findings.

My first impressions of a Universal Windows Applications is mixed. On one hand I found the starting templates extremely well thought out, especially if someone who hadn't been exposed to MVVM prior. In addition I liked the idea that all but my View could be shared being that the Windows Phone 8.1 app is not the Silverlight 8.1 project type. This came with its own negatives however as you lose access to DeviceStatus, which as of the time of this writing is not available in Windows Runtime applications. I should note my scenario with jcBENCH is kind of unique, it requires the ability to query the device pretty extensively to get the number of cores, cpu model, speed and architecture on each. For a typical scenario you wouldn't need this level of detail.

Going forward I think I might simply keep with my MVVM Cross methodology to create Android and iOS applications with Xamarin for work projects, especially considering Windows Store and Windows Phone are unfortunately not the top requested platforms for clients of my employer. For personal projects I will keep building Universal Windows Applications however, as both of those platforms I enjoy far more than iOS and Android (even with Xamarin).

In regards to getting access to the QueryPerformanceFrequency, QueryPerformanceCounter and GetNativeSystemInfo inside the Shared project you'll need to do the following: [csharp] #if WINDOWS_APP [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi)] private static extern bool QueryPerformanceFrequency(out long lpFrequency); [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi)] internal static extern void GetNativeSystemInfo(ref SYSTEM_INFO lpSystemInfo); [DllImport("kernel32.dll")] private static extern bool QueryPerformanceCounter(out long lpPerformanceCount); #endif #if WINDOWS_PHONE_APP [DllImport("api-ms-win-core-profile-l1-1-0.dll", SetLastError = true, CharSet = CharSet.Ansi)] private static extern bool QueryPerformanceFrequency(out long lpFrequency); [DllImport("api-ms-win-core-sysinfo-l1-2-0.dll", SetLastError = true, CharSet = CharSet.Ansi)] internal static extern void GetNativeSystemInfo(ref SYSTEM_INFO lpSystemInfo); [DllImport("api-ms-win-core-profile-l1-1-0.dll")] private static extern bool QueryPerformanceCounter(out long lpPerformanceCount); #endif [/csharp] More to come on Universal Windows Applications and some big jcBENCH announcements coming later this week.

In working on the ia64/Win32 port a few weeks ago, I realized I hadn't completed the CPU Detection nor released an x86/Win32 client in over a year. New since the last release is the complete cpu detection and now uses the common code base across all of the platforms. Result uploading will be coming in the big 0.9 release (hoping for next month).

In general though, I hope to add more platforms to my ever expanding list and offer a quick way to download the client for the platform you wish to test. The existing jcBENCH page was a carry over from the WordPress page I created a very long time ago now - look for that also to coincide with the 0.9 release.

In general I have current native ports for the following platforms:
-x86/Win32
-sparc/Solaris
-mips/NetBSD
-mips3/IRIX
-mips4/IRIX

And older (need to recompile and update) the following:
-x86/Linux
-ia64/Linux
-ppc/MacOS X
-x86/MacOS X
-arm/Windows Phone 8
-arm/Android

With ia64/Win32 and alpha/Win32 releases coming this month - just waiting on obtaining VC++ 6.0 for Alpha and some quirks in ia64/Win32 CPU Detection.

I'm looking to add x86/FreeBSD and Windows Store to the list sooner than later.

For those looking for the x86/Win32 release click here.