According to ABO official web site, and their face book
男单:谌龙 林丹 王睁茗 田厚威 薛松
女单:李雪芮 王适娴 王仪涵 孙瑜 姚雪(Q)
男双:柴飚/洪炜 刘小龙/邱子瀚 傅海峰/张楠 康骏/蔡赟(Q) 鲁恺/刘成(Q)
女双:马晋/唐渊渟 田卿/汤金华 赵芸蕾/王晓理(R)
混双:徐晨/马晋 刘成/包宜鑫 鲁恺/黄雅琼
A place to share
According to ABO official web site, and their face book
男单:谌龙 林丹 王睁茗 田厚威 薛松
女单:李雪芮 王适娴 王仪涵 孙瑜 姚雪(Q)
男双:柴飚/洪炜 刘小龙/邱子瀚 傅海峰/张楠 康骏/蔡赟(Q) 鲁恺/刘成(Q)
女双:马晋/唐渊渟 田卿/汤金华 赵芸蕾/王晓理(R)
混双:徐晨/马晋 刘成/包宜鑫 鲁恺/黄雅琼
Recently I am working on UI decoding optimization. I found this program, Full Throttle Override, is very useful, and it can fully release the power of your CPU.
To balance of power consumption and performance, almost all x86 CPUs support either Cool’n’Quiet or SpeedStep or PowerNow! technology, which can dynamically adjust the CPU frequency based on the loading.
I found it’s pretty easy to implement Full Throttle Override and here is the core C++ code
void FullThrottle()
{
OSVERSIONINFO osvi;
memset(&osvi, 0, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
// For Vista and above
if (osvi.dwMajorVersion >= 6)
{
GUID *scheme;
PowerGetActiveScheme(NULL, &scheme);
PowerWriteACValueIndex(NULL
, scheme
, &GUID_PROCESSOR_SETTINGS_SUBGROUP
, &GUID_PROCESSOR_THROTTLE_MINIMUM
, 100);
PowerSetActiveScheme(NULL, scheme);
}
else
{
MessageBox(NULL, L"Not supported by your OS!",L"",0);
}
}
These two weeks, I am working on our product UI side to improve the performance of animation rendering. Previously, there is only one single thread to decode the animation line by line, and it takes around 50ms for the whole frame.
Now, I change the way of rendering, and let all lines parallel decode to fully take advantage of modern multi-core CPU.
Visual Studio natively supports OpenMP, it gives me a easy way to access this powerful tool.
After some simple code update, surprisingly, I found that my frame decoding performance boosts 950% (almost 10 times faster), from 8 FPS to 76 FPS!
Let’s do simple test with the following code:
#define TEST_LENGTH 0x3fffffff
double mptest()
{
LARGE_INTEGER large_interger;
double dff;
__int64 c1, c2;
QueryPerformanceFrequency(&large_interger);
dff = large_interger.QuadPart;
//
unsigned char *test = new unsigned char[TEST_LENGTH];
QueryPerformanceCounter(&large_interger);
c1 = large_interger.QuadPart;
#pragma omp parallel for
for (int i = 0; i<TEST_LENGTH; i++)
{
test[i] = rand();
}
QueryPerformanceCounter(&large_interger);
c2 = large_interger.QuadPart;
delete test;
return (c2 - c1) * 1000.0f / dff;
}
double test()
{
LARGE_INTEGER large_interger;
double dff;
__int64 c1, c2;
QueryPerformanceFrequency(&large_interger);
dff = large_interger.QuadPart;
//
unsigned char *test = new unsigned char[TEST_LENGTH];
QueryPerformanceCounter(&large_interger);
c1 = large_interger.QuadPart;
for (int i = 0; i<TEST_LENGTH; i++)
{
test[i] = rand();
}
QueryPerformanceCounter(&large_interger);
c2 = large_interger.QuadPart;
delete test;
return (c2 - c1) * 1000.0f / dff;
}
int _tmain(int argc, _TCHAR* argv[])
{
printf("Random generation cost with MP %lfmsn", mptest());
printf("Random generation cost without MP %lfmsn", test());
_getch();
return 0;
}
Look at the huge difference!
http://australianbadmintonopen.com.au/news/100-line-judge-training-commences
Another year Australia badminton super series
Positions for line judging are still available. Interested parties, please contact Kate at [email protected]
Sometimes, it’s hard to find Microsoft .Net framework 4.x installer link.
Here is my collections for the link:
I am working on Windows 7 Embedded recently, and need some hotfix, which is not publicly released by Microsoft. I found this article very useful.
Here is the tricks:
A customer can get the fix they want without calling in to Microsoft, assuming they know the KB number of the hotfix they want and can remember the URL format for a self-service hotfix request:
http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=KBNumber&kbln=KBLanguage
This is my first hand made x64 assembly code.
extrn MessageBoxA:proc
.DATA
CONST SEGMENT
msg DB "Hello World!", 0
CONST ENDS
.CODE
main PROC
sub rsp, 28h
xor rcx, rcx
lea rdx, msg
lea r8, msg
xor r9, r9
call MessageBoxA
main ENDP
END
To compile this code, in command prompt run
ml64 helloworld.asm /link /subsystem:windows /defaultlib:user32.lib /entry:main
The major different between x86 and x64 calling conventions. The first six integer or pointer arguments are passed in registers RDI, RSI, RDX, RCX, R8, and R9, while XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6 and XMM7 are used for floating point arguments. additional arguments are passed on the stack and the return value is stored in RAX.
Finally I found a home for my website.
Thanks Michael who providing this web hosting for me! Really appreciate!