Beispiel #1
0
int main()
{
	int ia[] =  {29,23,20,22,17,15,26,51,19,12,35,40}; 
	int ia2[] = {74,16,39,54,21,44,62,10,27,41,65,71};

	vector< int, allocator > vec1( ia,  ia +12 ), 
                                         vec2( ia2, ia2+12 );
	int ia_result[24];
	vector< int, allocator > vec_result( vec1.size()+vec2.size() );
		
	sort( ia,  ia +12 );   
        sort( ia2, ia2+12 );

// generates: 10 12 15 16 17 19 20 21 22 23 26 27 29 35 39 40 41 44 51 54 62 65 71 74 
	merge( ia, ia+12, ia2, ia2+12, ia_result );
	for_each( ia_result, ia_result+24, pfi ); cout << "\n\n";

	sort( vec1.begin(), vec1.end(), greater<int>() );
	sort( vec2.begin(), vec2.end(), greater<int>() );

	merge( vec1.begin(), vec1.end(),
               vec2.begin(), vec2.end(),
	vec_result.begin(), greater<int>() );

// generates: 74 71 65 62 54 51 44 41 40 39 35 29 27 26 23 22 21 20 19 17 16 15 12 10 
        for_each( vec_result.begin(), vec_result.end(), pfi ); cout << "\n\n";

	return 0;
}
static int test_neon()
{
	const int test_round = 1000;
	const int data_len = 100000;
	std::vector<float> vec_a(data_len);
	std::vector<float> vec_b(data_len);
	std::vector<float> vec_result(data_len);
	std::vector<float> vec_result2(data_len);
	//fill random value in vecA & vecB
	std::cout << "round of test is " << test_round << std::endl;
	std::cout << "size of input vector is "<< data_len << std::endl;
	std::cout << "filling random data to input vector..." << std::endl;
	fill_random_value(vec_a);
	fill_random_value(vec_b);
	std::cout << "fill random data to input vector done.\n" << std::endl;
	//check the result is same
	{
		normal_vector_mul(vec_a, vec_b, vec_result);
		neon_vector_mul(vec_a, vec_b, vec_result2);
		if (!is_equals_vector(vec_result,vec_result2))
		{
			std::cerr << "result vector is not equals!" << std::endl;
			return -1;
		}
	}
	//test normal_vector_mul
	{
		FuncCostTimeHelper time_helper("normal_vector_mul");
		for (int i = 0; i < test_round;i++)
		{
			normal_vector_mul(vec_a, vec_b, vec_result);
		}
	}
	//test neon_vector_mul
	{
		FuncCostTimeHelper time_helper("neon_vector_mul");
		for (int i = 0; i < test_round; i++)
		{
			neon_vector_mul(vec_a, vec_b, vec_result2);
		}
	}
	return 0;
}