Я использую xlrd
для обработки файлов Excel. Я запускаю сценарий для папки, содержащей много файлов, и печатаю сообщения, связанные с файлами. Однако для каждого файла, который я запускаю, я также получаю следующее сообщение об ошибке xlrd:
WARNING *** OLE2 inconsistency: SSCS size is 0 but SSAT size is non-zero
Есть ли способ подавить это сообщение об ошибке, так что интерфейс командной строки будет печатать только то сообщение, которое я хочу?
-121--1319915-Прежде чем ответить на этот вопрос, рассмотрите предсказание ветви.
У меня есть несколько сценариев, где я могу заменить условный оператор вызовом функции с помощью указателя функции. Кое-что вроде этого. (Вы можете думать о программировании на основе компонентов вместо наследования для аналогичного типа senario)
class Shape
{
float Area()
{
if(type == SQUARE)
{
return length*length;
}
else if(type == RECTANGLE)
{
return length*breadth;
}
}
}
Один и тот же класс может быть написан так.
class Shape
{
void SetAreaFunction(void *funcptr)//this function is used to set the current AreaFunc
{
CurrentAreaFunc = funcptr ;//this holds the pointer to current area func
}
float SqauareArea();//this will return square area
float RectangleArea();//this will return rectangle area
float Area()
{
currentAreaFunc();
}
}
ЕСЛИ вы учитываете вышеприведенные случаи, оба достигают одинаковых результатов. Но, я думаю о производительности накладных расходов. Во втором случае я избегаю проблемы прогнозирования ветвей, имея вызов функции.
Теперь дайте мне знать, что является лучшей практикой и "лучше оптимизированным кодом" в такого рода сенариях. (btw, мне не нравится утверждение "Предварительная оптимизация корень всего зла", так как оптимизация имеет свои преимущества, поэтому я рассматриваю оптимизацию моего кода!)
P.S: Я не против, если кто-то даст подробный обзор о том, "насколько плохим может быть предсказание ветвей" даже в коде сборки.
Обновление: после профилирования (аналогичный тип кода выше),
Если Состояние преуспело в этом виде senario. Может ли кто-нибудь дать повод для этого?
Функциональный код вызова может быть предварительно выбран, так как нет кода ветвления? Но вот его выглядит в другую сторону.. ветвящийся код выигрывает!: O
Профилирован на оптимизации Intel Mac Osx, GCC O3/Os.