Вы можете использовать StringRequest, чтобы делать то же самое, что и с JsonObjectRequest, при этом все еще имея возможность легко отправлять параметры POST. Единственное, что вам нужно сделать, это создать JsonObject из строки запроса, которую вы получаете, и оттуда вы можете продолжить, как если бы это был JsonObjectRequest.
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
//Creating JsonObject from response String
JSONObject jsonObject= new JSONObject(response.toString());
//extracting json array from response string
JSONArray jsonArray = jsonObject.getJSONArray("arrname");
JSONObject jsonRow = jsonArray.getJSONObject(0);
//get value from jsonRow
String resultStr = jsonRow.getString("result");
} catch (JSONException e) {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> parameters = new HashMap<String,String>();
parameters.put("parameter",param);
return parameters;
}
};
requestQueue.add(stringRequest);
Если вам нужно реализовать такую функциональность самостоятельно, я предлагаю вам проверить Устройство Даффа , если это нужно сделать эффективно.
Читая ваши комментарии, я понимаю, что вы можете захотеть использовать параллелизм. Для этого есть инструкции, но они работают только с регистрами, а не с памятью.
Это связано с особенностями архитектуры компьютера (я предполагаю, что x86).
Вы можете получить доступ только к одной ячейке памяти в время, потому что у компьютера только одна адресная шина. Если вы попытаетесь получить доступ к более чем одному местоположению одновременно, вы перегрузите шину, и ничего не будет работать должным образом.
Если вы можете поместить нужные данные в регистры, тогда вы сможете использовать множество классных инструкций процессора, например MMX или SSE, для выполнения параллельных вычислений. Но что касается параллельного копирования памяти, это невозможно.
Как говорили другие, используйте memcpy. Это надежно, отлажено и быстро.
РЭП МОВСД в сборке возможно? Трудно сказать без дополнительной информации о том, что именно вы пытаетесь скопировать ... Или вы можете перепрограммировать контроллер DMA, чтобы он делал это тоже, но на самом деле это будет медленнее, чем просто использование процессора. : -)
Используйте memmove (), если исходная и исходная точки совпадают. Обычно memcpy () и memmove () уже сильно оптимизированы для clib вашего компилятора. Если вы все же пишете замену, по крайней мере, сравните ее с версиями clib, чтобы убедиться, что вы не замедляете свой код.
У меня есть блок, состоящий из 5000 строк или более, и в функции, которая вызывается все время 10000 раз
Также подумайте об изменении структуры данных. Возможно, вместо 2D-массива у вас может быть одномерный массив указателей на вторичные массивы (столбцы). Тогда вместо копирования целых строк вам нужно только скопировать или переместить указатели. Вы можете объединить массивы столбцов в список свободных, чтобы не тратить много времени на их выделение и освобождение.